2013-03-02 107 views
0

我想防止在点击菜单项后关闭下拉菜单。这是我在做什么:停止进行twitter引导程序的下拉菜单

$(document).ready(function() { 
     $(document).on("click", ".dropdown-menu li", function(event){ 
     debugger; // it stops here though 
     event.stopPropagation(); 
     }); 
}); 

但下拉菜单项在点击任何菜单项后关闭。我究竟做错了什么?

P.S.我必须使用$(document).on("click", ".dropdown-menu li",因为此下拉列表是由ajax动态构建的。

回答

-1

出于某种原因,只有这种解决方案正在

$(document).ready(function() { 
    $(".dropdown-menu").on("click", "li", function(e){ 
    e.stopPropagation(); 
    }); 
    }); 

有谁知道为什么吗?

+0

我以为我解释了为什么*? – deceze 2013-03-02 08:19:18

+0

@deceze'$(“。dropdown-menu”)。on(“click”,“li”,' – 2013-03-02 10:25:49

+0

请仅使用* Post answer *按钮才能得到实际答案。 d修改您的原始问题以添加其他信息。 – jcsanyi 2013-06-25 07:16:04

2

如果您绑定了document上的处理程序,则该事件将已经一直移动到顶部,并且已经触发了关闭菜单的事件处理程序。您需要将处理程序绑定到正在单击的元素上,如果要在到达Bootstrap处理程序之前捕获该元素,请将其停止传播。

$('.dropdown-menu li').on('click', ...) 
+0

(说到这里,我并不确切知道Bootstrap绑定了它的处理程序,以及是否有机会挤压它们之间的处理程序。) – deceze 2013-03-02 07:57:19

+0

我必须使用'$(document).on(“click”, “.dropdown-menu li”,'因为这个下拉是由ajax动态构建的,所以我必须使用document,那么我应该怎么做才能停止传播? – 2013-03-02 07:59:18

+0

没有理由绑定到'document'。进一步向下(可能出于同样的原因有问题)的“活动”处理程序,或者在构建并插入新菜单后每次将事件处理程序附加到新元素上。 – deceze 2013-03-02 08:02:24

0

你可以这样写:

$(".dropdown-menu li").on("click", function(event){ 
event.stopPropagation(); 


}); 
+0

看看我的更新 – 2013-03-02 08:02:12