javascript - Bootstrap : Using panel heading to collapse panel body

标签 javascript jquery html twitter-bootstrap twitter-bootstrap-3

我有一个带有面板标题和面板主体的 Bootstrap v3 面板。我希望用户能够单击面板标题,它将折叠/展开面板主体。我正在使用 Bootstrap 的 Collapse javascript 来执行此操作。这是我的标记:

<div class="panel panel-default group-panel">
  <div class="panel-heading" role="button" data-toggle="collapse" data-target="#panel-body-foobar">
    <a href="#" class="btn btn-xs">Action Button</a>
  </div>
  <div class="panel-body collapse in" id="panel-body-foobar">
    Some content here. 
  </div>
</div>

此代码工作正常,单击面板标题将折叠/展开正文。但是,请注意,面板标题内还有一个按钮。当我单击该按钮时,它会折叠/展开面板主体。看这个jsfiddle如果你不明白我的意思。

如何配置它,以便仅直接单击面板标题(而不是任何子元素)才会触发折叠/展开?

最佳答案

我相信解决方案是定义我自己的点击处理程序(而不是使用 Bootstrap 自动设置的一个),它会忽略对子项的点击:

$('.panel-heading[data-toggle^="collapse"]').click(function(){
    var target = $(this).attr('data-target');
    $(target).collapse('toggle');
}).children().click(function(e) {
  e.stopPropagation();
});

感谢this answer帮助我弄清楚如何让 jQuery 点击处理程序忽略对子项的点击。请注意,由于使用了e.stopPropagation();,这不会禁用子级本身的任何点击处理程序。

关于javascript - Bootstrap : Using panel heading to collapse panel body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33725181/

相关文章:

javascript - 用 ajax 内容替换当前页面

javascript - 使用ajax更新服务器从一个列表中选择对象并将它们移动到另一个列表中的好方法是什么?

html - 无法向我的代码添加 margin-right

html - 如何使用 Django 在 HTML 中显示多个对象的列表,一个在另一个下面?

javascript - 为什么在使用 jQuery Gridly 插件后无法编辑 span?

javascript - 如何解码javascript的编码字符串

javascript - react Material UI 重置值

javascript - 为什么这与 jQuery 不相符?

javascript - 从 javascript 翻译为 jquery

javascript - 调试 HTML 时,有没有办法使用 JavaScript 或 jQuery 监听 div 宽度变化?