2014-09-02 58 views
-2

我有一個簡單的下拉菜單,但我遇到了麻煩。我的下拉列表不起作用 - 有問題的JS

每當我點擊「li」時,下拉菜單(裏面是「li」)就會出現,這很棒,但問題是當我想要下拉消失時,我再次單擊「li」,但是「。 slideToggle()「似乎沒有關閉它。

但是,如果我雙擊「li」的速度真的很快,它將按照預期擺脫下拉菜單,但顯然這是非常糟糕的用戶體驗。

請有人檢查我的代碼?

$('.dropdown-li').click(function(){ 

    $('.navigation-dropdown').removeClass('enabled'); 

    $(this).toggleClass('enabled'); 

    $('.dropdown-li').addClass('enabled'); 

    if ($(this).hasClass('enabled')) { 
     $('.navigation-dropdown').stop().hide(); 
     $('.navigation-dropdown', this).slideToggle(); 
    } else{ 
     $('.navigation-dropdown', this).slideToggle(); 
    } 

    return false; 

}); 

感謝,

喬丹

+1

請問您可以發佈完整的代碼示例嗎? – j08691 2014-09-02 21:06:38

+0

'slideToggle();''.hide()'後會顯示該項目。有一個或另一個,而不是兩個。 – Nivas 2014-09-02 21:07:15

+0

對不起,但這是所有正在使用的JS,我會嘗試你的建議,謝謝。 – 2014-09-02 21:09:54

回答

0

這是你目前使用的是什麼完全不同的jQuery,但它在以前的項目工作對我來說:

$(document).ready(function(){ 
$(".showhide").click(function(e){ 
    e.preventDefault(); 

    $(this).find('ul').slideToggle(1); 
    $(this).toggleClass("active"); 
    return false; 
}); 
}); 

這裏有一個JSFiddle示例。我希望這是你正在尋找的! http://jsfiddle.net/4zdjn262/

+0

感謝IronFlare,我會繼續嘗試與代碼現在,但如果我仍然無法得到它的工作,我會去你的建議:) – 2014-09-02 21:40:36

+0

IronFlare,我快速看看你的JSFiddle和我想知道當你點擊另一個「li」時你將如何關閉另一個「ul」。因此,當您點擊「展開1」,然後立即點擊「展開2」,您將如何關閉「展開1」? – 2014-09-02 22:16:45

+0

我修改了代碼以在單擊列表時摺疊所有其他列表。 http://jsfiddle.net/4zdjn262/2/另外,爲了讓它看起來更愉快一些,我將slideToggle時間從1(即時)改爲400.如果你不關心動畫或者你不喜歡'不需要它,你可以用'.hide()'''用'slideToggle(1)'和'.slideUp(400)'替換'slideToggle(400)'。 – IronFlare 2014-09-02 22:42:49