默认情况下隐藏div并在使用引导程序单击时显示


68

我想显示和隐藏div,但我希望它默认情况下是隐藏的,并且能够在单击时显示和隐藏。这是我编写的代码:

<a class="button" onclick="$('#target').toggle();">
 <i class="fa fa-level-down"></i>
</a>

<div id="target"> 
 Hello world... 
</div>

您能重新考虑接受的答案吗?
罗布(Robsch)'16

Answers:


23

就加水 style="display:none";<div>

小提琴我说: http //jsfiddle.net/krY56/13/

jQuery的:

function toggler(divId) {
    $("#" + divId).toggle();
}

首选具有CSS类 .hidden

.hidden {
     display:none;
}

1
严格来说,Ouda是您使用jQuery进行切换的方式。不是您如何使用引导程序来完成相同的任务CowWarrior实际上回答了您所问的问题。Ouda的回答确实“有效”,但实际上并非您所要的。不知道您能对此做些什么..但这就是CowWarrior的答案得分高得多的原因
踩水2015年

@RolandiXor,我猜这是因为Bootstrap中已经存在一个.hidden类(至少从v3.3.7起现在已经存在),该类设置了display:none !important不会被display:block设置的内联覆盖jQuery.toggle()
ch1pn3ss

273

在这里,我提出一种使用Bootstrap框架内置功能专门执行此操作的方法

  1. 您需要确保目标div具有ID。
  2. Bootstrap有一个class“崩溃”,默认情况下会隐藏您的块。如果您希望div可折叠并默认显示,则需要在折叠中添加“ in”类。否则,切换行为将无法正常工作。
  3. 然后,在您的超链接上(也适用于按钮),添加一个指向目标div的href属性。
  4. 最后,添加属性data-toggle="collapse"以指示Bootstrap向该标签添加适当的切换脚本。

这是一个代码示例,可以直接在已经包含Bootstrap框架(版本3.4.1之前)的页面上直接复制粘贴:

<a href="#Foo" class="btn btn-default" data-toggle="collapse">Toggle Foo</a>
<button href="#Bar" class="btn btn-default" data-toggle="collapse">Toggle Bar</button>
<div id="Foo" class="collapse">
    This div (Foo) is hidden by default
</div>
<div id="Bar" class="collapse in">
    This div (Bar) is shown by default and can toggle
</div>

27
在我看来,这应该是公认的答案,Bootstrap已经拥有一个非常干净的内置程序来处理该问题
ibrabeicker 2015年

1
使用引导程序干净整洁。
Jayant 2015年

18
我知道这是一个老问题,但是要添加到@CowWarriors答案中,您可以将href属性替换为data-target="#id-of-element-to-toggle"。当使用引导程序创建手风琴并且您想使整个元素可单击而不仅仅是链接时,这特别有用。jsfiddle.net/clDjs/L8Lef3cx/1
clD

可以不使用<a>或以编程方式完成此操作<button>吗?
davidtgq '16

2
Bootstrap中有什么方法可以折叠全部<div>并仅显示单击的内容<div>
Shivendra '16

16

试试这个:

<button class="button" onclick="$('#target').toggle();">
    Show/Hide
</button>
<div id="target" style="display: none">
    Hide show.....
</div>

1
缺少返回的false;在onclick方法中,以防止转到href并使用class =“ collapse”而不是style =“ display:none”。
躁狂抑郁症

9

我意识到这个问题有点过时,并且因为它出现在Google搜索类似问题上,所以我认为我将在@CowWarrior的答案之外再扩大一点。我一直在寻找类似的解决方案,并且在搜索了无数SO问题/答案和Bootstrap文档后,解决方案非常简单。同样,这将使用内置的Bootstrapcollapse类来显示/隐藏div和Bootstrap的“折叠事件”。

我了解到,使用Bootstrap手风琴很容易,但是大多数时候,即使所需的功能与“手风琴”有些“相似”,但在某种程度上,人们希望<div>根据它来显示皮革是不同的,可以说是上的菜单按钮navbar。下面是一个简单的解决方案。锚标记(<a>)可以是导航栏项目,并且基于折叠事件,相应的div将替换现有的div。在CodeSnippet中看起来有些草率,但与实现功能非常接近-

JavaScript所做的就是<div>使用

$(".main-container.collapse").not($(this)).collapse('hide');

<div>通过检查Collapse事件显示加载的对象shown.bs.collapse。这是有关折叠事件的Bootstrap文档

注意:main-container这只是一个自定义类。

在这里-

$(".main-container.collapse").on('shown.bs.collapse', function () {    
//when a collapsed div is shown hide all other collapsible divs that are visible
       $(".main-container.collapse").not($(this)).collapse('hide');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<a href="#Foo" class="btn btn-default" data-toggle="collapse">Toggle Foo</a>
<a href="#Bar" class="btn btn-default" data-toggle="collapse">Toggle Bar</a>

<div id="Bar" class="main-container collapse in">
    This div (#Bar) is shown by default and can toggle
</div>
<div id="Foo" class="main-container collapse">
    This div (#Foo) is hidden by default
</div>


对我来说还不算过时。正是我想要的。
HPWD
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.