2011-04-21 53 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'); });