Javascript 为什么在打开模式内部折叠时启动引导模式回调

Javascript 为什么在打开模式内部折叠时启动引导模式回调,javascript,jquery,twitter-bootstrap,twitter-bootstrap-2,Javascript,Jquery,Twitter Bootstrap,Twitter Bootstrap 2,在bootstrap 2.3.2中,我注意到一个奇怪的行为,在模态中有一个折叠面板。因此,当打开collapse时,也会触发模式回调(例如show,show)。无法理解为什么会发生这种情况。 检查这里 这是一个bug吗?我认为是事件传播导致了这个问题。可能(我没有检查Bootstrap的代码)模式的设计方式是,如果其DOM中的某个元素接收到事件,就会执行“show”回调,从而有效地显示模式弹出窗口 如果阻止事件传播,则永远不会执行回调。例如,使用此选项: $('#myModal').find('

在bootstrap 2.3.2中,我注意到一个奇怪的行为,在模态中有一个折叠面板。因此,当打开collapse时,也会触发模式回调(例如show,show)。无法理解为什么会发生这种情况。 检查这里


这是一个bug吗?

我认为是事件传播导致了这个问题。可能(我没有检查Bootstrap的代码)模式的设计方式是,如果其DOM中的某个元素接收到事件,就会执行“show”回调,从而有效地显示模式弹出窗口

如果阻止事件传播,则永远不会执行回调。例如,使用此选项:

$('#myModal').find('.accordion-toggle').click(function (e) {
  e.preventDefault();
  e.stopPropagation();
  console.debug('blocked propagation!');
});
希望这有助于解释。这是我给你的叉子:

这是一个众所周知的问题。人们编写了一个解决方案,但它不起作用

$('#myModal').find('.accordion-toggle').on('hidden', function (event) {
    event.stopPropagation()
});    
它的名称空间问题在Bootstrap3版本中得到了解决。我的建议是,切换到bootstrap v3。

oops,副作用!:)。。。我认为传播必须在其他地方进行切割,但可能是过度了,因为为了手风琴可用,模态必须已经显示出来。可能模态的监听器实际上在窗口对象上,或者在一个非常高的级别上,它被设计成这样工作,因此模态DOM中的任何用户生成的事件都会导致模态打开。。。