2013-03-02 61 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