2012-09-14 59 views
0

我想做一個下拉菜單,並希望所有其他打開菜單有一個類,當不同的菜單出現時刪除。問題是,是,你必須向你以前點擊菜單上點擊兩次得到它再次打開:Jquery not()在上下文中

$(document).ready(function(){ 
$('li.dropdown').click(function(){ 
    //$('.dropdownmenu').hide() ; 
    $('.dropdownmenu').not('ul', this).removeClass('opened'); 
    if($(' ul', this).hasClass('opened')) 
    { 
     $(' ul', this).removeClass('opened'); 
     $(' ul', this).hide(); 
    } 
    else 
    { 
     $(' ul', this).addClass('opened') ; 
     $(' ul', this).show() ; 
    } 

}) 
}) 

Here it is in JSFiddle,點擊項目文本,使菜單彈出,如果你打開和關閉幾個問題就會變得明顯。如果你知道更好的方式來做我想做的事情,請讓我知道!

是的,你可以的,如果你喜歡:P她是我最喜歡哈哈


此外,菜單應,如果你在菜單項上單擊再次關閉。

+1

你可以發佈一個jsFiddle的例子嗎? – elclanrs

+0

我可以爲你的頭像+1嗎? – AlienWebguy

+1

請創建一個http://jsfiddle.net/演示。僅供參考,'.not'只考慮第一個參數( - >忽略其他參數)。 –

回答

1

當我需要這樣做時,我通常從一切中刪除這個類,而不用擔心應該保留它的那個,和隱藏這個元素一樣。

然後只需添加必要的類到點擊元素並顯示它。

如果你需要做的不是,然後做:

var ul = $(this).closest('ul'); 

,然後使用該變量not()

你實際上已經把事情顛倒了 - 你正在尋找一個李的內部,這與它應該是相反的。

0

感謝@Ariel,你的想法並沒有馬上工作,但我所做的:

VAR innerul = $( 'UL',這一點);

相反,哪些工作。

+1

這應該是對Ariel答案的評論,而不是一個新的答案。 –