jquery Twitter引导程序崩溃,除了第一个

frebpwbc  于 2022-12-03  发布在  jQuery
关注(0)|答案(3)|浏览(146)

我想通过编程方式折叠Bootstrap 3可折叠 accordion 中除第一项之外的所有项。但是,我遇到了一些奇怪的行为。请检查一下这个小提琴,让我知道出了什么问题。
http://jsfiddle.net/k9o2j53a/

$('button').click(function(){
    var panels = $('#accordion').find('.panel-collapse');
    panels.collapse('hide');
    panels.first().collapse('show');
});

第一次单击按钮时的行为与第二次单击时的行为不同。随后的单击似乎在所需的行为和每个项目的折叠之间交替。

nsc4cvqm

nsc4cvqm1#

试试这个:

$('#a').click(function(){
   var panels = $('#accordion').find('.panel-collapse').not("#collapseOne");
   panels.collapse('hide');
   panels.collapse('show');
});

更新的fiddle
如果我没理解错你的问题,你想“除第一个外全部折叠”,直接用.not("selector")就可以了。

hk8txs48

hk8txs482#

我找到了我一直在寻找的解决方案。事实证明,可折叠的元素必须首先被初始化,否则第一次调用show/hide将执行初始化本身,并导致这种“切换”行为,我一直在观察并试图避免这种行为。
因此,要显示/隐藏面板,最好编写:

$('#accordion').find('.panel-collapse').collapse({toggle: false}).collapse('show');

然后先向众人隐瞒:

$('#accordion').find('.panel-collapse:gt(0)').collapse({toggle: false}).collapse('hide');
$('#accordion').find('.panel-collapse:first').collapse({toggle: false}).collapse('show');
fhg3lkii

fhg3lkii3#

延迟显示以完成隐藏动画:

$('#a').click(function(){
    $('#accordion .in').collapse('hide');

  setTimeout(function(){ $('#collapseOne').collapse('show'); }, 500);

 });

http://jsfiddle.net/k9o2j53a/6/
您可以调整延迟以满足您的目的

相关问题