【问题标题】:Disable collapse for link in a data-toggle element禁用数据切换元素中链接的折叠
【发布时间】:2014-07-30 05:01:47
【问题描述】:

我有一个折叠面板主体,像这样(the fiddle,现在有固定代码):

<div class="panel panel-default">
    <div class="panel-heading">
        <div class="panel-title" data-toggle="collapse" href="#collapseOne">
            <a href="#">1) collapsing link</a>
            <a href="#">2) not collapsing link</a>
        </div>
    </div>
    <div id="collapseOne" class="panel-collapse collapse in">
        <div class="panel-body">Anim pariatur cliche ...</div>
    </div>
</div>

数据切换设置在面板标题上,因为我想单击它的任意位置以打开另一个面板。除了第二个链接。我的目标是禁用第二个链接的折叠行为。实现这一目标的最佳/最简单方法是什么?

重要提示:我不想只在第一个链接上设置数据切换。我想点击面板上的任意位置来触发偶数,除了第二个链接。

【问题讨论】:

  • 为什么不将data-toggle="collapse" 设置为要触发事件的链接?
  • @JorgeGarcía 因为它不起作用
  • @Adjit 它仍然可以工作,但不是我想要的方式。
  • @Karol 所以我知道你将标签设置为 Javascript,但 JQuery 的答案会满足吗?
  • @Adjit 当然!我已经与引导程序一起加载了 jquery。

标签: javascript twitter-bootstrap collapse


【解决方案1】:

您需要为那些不想触发折叠事件的元素添加一个类,然后通过 javascript 停止事件传播。所以……这是正确的答案。

<div class="panel panel-default">
    <div class="panel-heading">
        <div class="panel-title" data-toggle="collapse" href="#collapseOne">
            <a href="#">1) collapsing link</a>
            <a href="#" class="no-collapsable">2) not collapsing link</a>
        </div>
    </div>
    <div id="collapseOne" class="panel-collapse collapse in">
        <div class="panel-body">Anim pariatur cliche ...</div>
    </div>
</div>

像这样停止事件传播:

$('.no-collapsable').on('click', function (e) {
    e.stopPropagation();
});

【讨论】:

  • 好吧,这不是我想要的。我明确表示我希望在任何地方单击面板时触发折叠。除了第二个链接。
  • 明白了,所以,让我看看我们如何做到这一点。
  • @Karol 我更新了我的答案...如果你想要,请告诉我。
  • @JorgeGarcía 这么多年过去了,但是对于 bootstrap 5,我面临同样的问题并且您的解决方案不起作用,因为在触发事件侦听器时我们停止传播,可折叠项目已经打开。所以折叠开幕事件已经完成/完成
猜你喜欢
  • 2014-03-03
  • 2013-08-22
  • 2015-01-03
  • 2023-03-05
  • 1970-01-01
  • 2013-11-05
  • 2021-02-11
  • 2017-07-01
  • 2015-02-09
相关资源
最近更新 更多