Twitter引导程序在下拉列表中停止传播

Esc*_*ar5 26 javascript jquery twitter-bootstrap jquery-events

我在插件jOrgChart的div中有一个twitter bootstrap下拉列表.

我遇到的问题是,当我单击按钮打开下拉菜单时,它还会触发父div中的单击事件,该事件会执行其他元素的折叠.

这是我的HTML:

<div id="chart">
<div class="node">
    <div class="btn-group">
        <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
        Actions
        <span class="caret"></span>
        </a>
        <ul class="dropdown-menu" style="text-align:left;">
            <li><a href="#">Edit</a></li>
            <li><a href="#">Delete</a></li>
        </ul>
    </div>
</div>

<div class="node">
...
</div>
Run Code Online (Sandbox Code Playgroud)

我想阻止点击a.dropdown-toggle从冒泡到div.node,我尝试了这个:

$("div#chart div.btn-group > a.dropdown-toggle").click(function (e) {
            e.stopPropagation();
        });
Run Code Online (Sandbox Code Playgroud)

但现在下拉列表不起作用.

编辑

这是具体案例:http://jsfiddle.net/UTYma/2/ (感谢Joe Tuskan开始小提琴)

Joe*_*Joe 16

$("#orgchart").jOrgChart({ chartElement: '#chart' });

$("div#chart div.btn-group > a.dropdown-toggle, .dropdown-menu li a").click(function(e) {
    e.stopPropagation();
    $('.dropdown-menu').toggle();
});?
Run Code Online (Sandbox Code Playgroud)

停止传播然后切换.


我必须将下拉菜单项添加到单击处理程序以保持行为不变.

  • 此解决方案的一个缺点是在下拉列表上调用toggle()会忽略您使用原始点击事件处理程序获得的某些功能 - 例如设置通过单击屏幕上的任意位置来关闭下拉列表的功能 (4认同)