2011-04-21 44 views
1

我有4個菜單下拉列表,我綁定了一個點擊調用切換列表項的函數。:做動畫時可見總是返回true

如果我點擊所有4個菜單,所有4個列表項將被切換顯示。 但是,我想使它當我點擊項目本身時,當前顯示的菜單的其餘部分應該切換並隱藏。

繼承人我怎麼做檢查,但它似乎並沒有工作。

的javascript:

test.$sections //$('#nav').find('>li') 
    .find('ul') 
    .filter(':visible') 
     .parent() 
    .each(test.toggleItemNav); 

'toggleItemNav' : function() { 
var $li = $(this); 
$li.find('ul') 
.stop(true, true 
.animate({ opacity: 'toggle', height: 'toggle' },{duration: 800, specialEasing: { opacity:'easeOutExpo', height: 'easeOutExpo' }}); 

},

HTML

<ul id="nav"> 
    <li class="11">11 
     <ul> 
       <li><a>1</a></li> 
       <li><a>2</a></li> 
       <li><a>3</a></li> 
     </ul> 
    </li> 
    <li class="22">22 
     <ul> 
       <li><a>1</a></li> 
       <li><a>2</a></li> 
       <li><a>3</a></li> 
     </ul> 
    </li> .... and so on 
+0

我沒沒辦法。點擊觸發菜單顯示它? – tenshimsm 2011-04-21 20:25:08

+0

點擊時我有4個菜單,它會顯示一個項目列表。我的問題是,當我點擊4菜單,4列表將被顯示。但是當我點擊4列表中顯示的項目時,我想關閉所有4個列表。 – teorius 2011-04-22 05:54:29

回答

0

你可以在對象上設置屬性,而動畫和篩選出來:

test.$sections.find('ul:visible:not([animating="true"])'); 
... 

var $ul = $li.find('ul'); 
$ul.attr('animating', 'true'); 
... 
$ul.animate(/* your params */, function() { $ul.attr('animating', 'false'); });