回答

3

Updated fiddle

你需要做只有一個變化:

而是聽hide.bs.dropdown事件僅.dropdown.active 的適用事件處理程序.dropdown

基本上變化:

$(".dropdown.active").on("hide.bs.dropdown",function(e) {

到:

$(".dropdown").on("hide.bs.dropdown",function(e) {


編輯: 爲了覆蓋默認的下拉列表的行爲,你需要忽略active狀態因此不止一個li元素可以保持展開狀態,您需要自行切換可見性。

Here's the updated demo

代碼:

$(function(){ 

    // Handle show/hide toggle yourself 
    $(".dropdown").on("click",function(e) { 
     if($(e.currentTarget).hasClass("open")) 
      $(e.currentTarget).toggleClass("open",false); 
     else 
      $(e.currentTarget).toggleClass("open",true); 
     e.preventDefault(); 
     return false; 
    }); 

    // suppressing default bahavior 
    $(".dropdown").on("hide.bs.dropdown", doNothing);    
    $(".dropdown").on("show.bs.dropdown", doNothing); 

    function doNothing(e) { 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

謝謝,我試了一下並更新了jsfiddle。問題在於它使一切活躍起來。你能幫助我嗎? – user3121847

+0

檢查我更新的解決方案! –

+0

解決方法:未捕獲ReferenceError:e未定義。只需更改「功能doNothing(e){」 –

0

不知道它的正確方法,但我沒有

$(function(){ 
    $('.nav').find('li.dropdown.active').addClass('open'); 
    $(".dropdown").on("hide.bs.dropdown",function(e) { 
     e.preventDefault(); 
     return false; 
    }); 
    $('.navbar-main li').on('click', function(){ 
    var me = $(this); 
    $('.navbar-main li').removeClass('open'); 
    $(this).addClass('open'); 
    }); 
}); 

及其工作的幫助精細:)