当前位置: 首页 > 知识库问答 >
问题:

你如何让推特引导手风琴保持一个群组的开放?

邹阳
2023-03-14

我正在尝试使用Twitter引导和accordion and collapse插件来模拟Outlook栏,到目前为止,我已经让collapse and accordion工作了,但它目前允许折叠所有部分。

我想限制它,以便始终显示一个且只有一个。

这是我正在研究的一个:http://jsfiddle.net/trajano/SMT9D/我认为这是沿着

$('#accordions').on('hide', function (event) {
  console.warn("HIDE TRIGGERED, check if trying to hide the active one if so stop");
})

共有3个答案

戚建德
2023-03-14

更新2018

下面介绍了如何在引导v3或v4中至少保持打开。这意味着打开的手风琴只能通过切换另一个打开的手风琴来关闭。

靴带4

https://www.codeply.com/go/bbCcnl0jBB

// the current open accordion will not be able to close itself
$('[data-toggle="collapse"]').on('click',function(e){
    if ( $(this).parents('.accordion').find('.collapse.show') ){
        var idx = $(this).index('[data-toggle="collapse"]');
        if (idx == $('.collapse.show').index('.collapse')) {
            e.stopPropagation();
        }
    }
});

此外,请参阅此答案,其中显示了如何指定一个“默认”手风琴,当所有其他手风琴关闭时,该手风琴将打开。

引导3

$('[data-toggle="collapse"]').on('click',function(e){
    if($(this).parents('.panel').find('.collapse').hasClass('in')){
        var idx = $(this).index('[data-toggle="collapse"]');
        var idxShown = $('.collapse.in').index('.accordion-body');
        if (idx==idxShown) {
            e.stopPropagation();
        }
    }
});

https://www.codeply.com/go/yLw944BrgA

<div class="accordion" id="myAccordion">
    <div class="panel">
        <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-1" data-parent="#myAccordion">Question 1?</button>
        <div id="collapsible-1" class="collapse">
            ..
        </div>
    </div>
    <div class="panel">
        <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-2" data-parent="#myAccordion">Question 2?</button>
        <div id="collapsible-2" class="collapse">
            ..
        </div>
    </div>
    <div class="panel">
        <button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#collapsible-3" data-parent="#myAccordion">Question 3?</button>
        <div id="collapsible-3" class="collapse">
           ...
        </div>
    </div>
</div>

(注意:Bootstrap 3中需要面板类才能使手风琴行为正常工作)

马凡
2023-03-14

我想精确地说出雨果·多佐伊的答案

http://jsfiddle.net/SMT9D/61/

您应该添加e。preventDefault()如果页面中有滚动条,则防止HTML锚的默认行为

$('.panel-heading a').on('click',function(e){
    if($(this).parents('.panel').children('.panel-collapse').hasClass('in')){
        e.preventDefault();
        e.stopPropagation();
    }
});
柯昆杰
2023-03-14

下面是一个简单的方法:

$('.accordion .btn-link').on('click', function(e) { 
  if (!$(this).hasClass('collapsed')) { 
    e.stopPropagation(); 
  } 
});

来自@mr_joncollette的评论

用于引导3的JSFIDLE。

引导3的代码:

$('.panel-heading a').on('click',function(e){
    if($(this).parents('.panel').children('.panel-collapse').hasClass('in')){
        e.stopPropagation();
    }
    // You can also add preventDefault to remove the anchor behavior that makes
    // the page jump
    // e.preventDefault();
});

代码检查单击的元素是否是当前显示的元素(由类“in”显示),如果它确实具有“in”类,则停止隐藏过程。

用于Bootstrap 2的JsFiddle。

引导2的代码:

js prettyprint-override">$('.accordion-toggle').on('click',function(e){
    if($(this).parents('.accordion-group').children('.accordion-body').hasClass('in')){
        e.stopPropagation();
    }
    // You can also add preventDefault to remove the anchor behavior that makes
    // the page jump
    // e.preventDefault();
});

注意:如果您想在手风琴上附加更多点击事件,请小心,因为e。stopPropagation()将阻止检查后发生的事件。

 类似资料:
  • 我尝试了以下代码,除了图标外,一切都很好。我试图在Google上找到一些解决方案,但我找不到我正在寻找的解决方案。 当我点击其中一个手风琴时,另一个手风琴应该折叠,当前点击的手风琴应该打开,同时fa图标应该根据手风琴的位置而改变。 这是我到目前为止已经尝试过的

  • 在引导手风琴中,我不需要单击文本,而是希望在单击div中的任何位置时使其折叠。 我正在使用引导程序3。所以它不是手风琴,而是一个可折叠的面板。你知道如何让整个面板都可以点击吗?

  • 问题内容: 我的页面上有3个Twitter Bootstrap手风琴,每一个都这样设置: 该“的手风琴s为像上面显示的一个,所以,和。每个手风琴的面板数相同。 如何更改此设置,以便一次只能打开一个面板?目前, 每个手风琴 可以打开一个面板,这不是我想要的行为。 演示: JSFiddle 问题答案: 尝试这个:

  • 我制作了一个带有引导的手风琴,但它处于for循环中,所以当我单击手风琴的一个项目时,所有其他项目都会同时打开。我怎么能只点击打开手风琴的一个项目?

  • 我有一个非常好的手风琴,它在网站上看起来很好,并且可以正常工作。但是,我正在尝试为其添加更多JavaScript功能,以使其看起来更专业。 目前,手风琴允许您一次打开多个面板,即如果我打开一个选项卡,然后打开另一个选项卡,两个选项卡将同时打开。关闭这些面板的唯一方法是重新单击标题。 我想要的是一些防止同时打开多个选项卡的JavaScript代码,所以如果我单击一个新面板,它应该首先关闭现有的打开面

  • 问题内容: 我可能是个白痴,但是如何在jQueryUI的手风琴中打开多个部分?演示一次只能打开一个……我正在寻找一个可折叠的菜单类型系统。 问题答案: 这原本是讨论中[的手风琴jQuery用户界面文档: 注意:如果要一次打开多个部分,请不要使用手风琴 手风琴不允许同时打开一个以上的内容面板,为此需要付出很多努力。如果您正在寻找一个可以打开多个内容面板的小部件,请不要使用它。通常它可以用几行jQue