2011-01-11 71 views
0

我在wordpress中做一個子導航,並有一個嵌套的列表樣式菜單。下面是一個HTML的例子。無論哪個目前的項目都有li類「current_page_item」。我需要摺疊所有子菜單,除非父級或其中一個子級上有current_page_item類。jQuery根據位置打開和關閉嵌套的ul導航

<ul> 
<li class="current_page_item"><a href="#">Parent Item</a> 
    <ul class="children"> 
    <li><a href="#">Child page</a></li> 
    <li><a href="#">Child page</a></li> 
    <li><a href="#">Child page</a></li> 
    <li><a href="#">Child page</a></li> 
    </ul> 
</li> 
<li><a href="#">Parent Item</a> 
    <ul class="children"> 
    <li><a href="#">Child page</a></li> 
    <li><a href="#">Child page</a></li> 
    </ul> 
</li> 
<li><a href="#">Parent Item</a> 
    <ul class="children"> 
    <li><a href="#">Child page</a></li> 
    <li><a href="#">Child page</a></li> 
    </ul> 
</li> 
<li><a href="#">Parent Item</a></li> 
<li><a href="#">Parent Item</a></li> 
</ul> 

這到目前爲止,這工作,但我不知道它是否可以因爲有一些閃爍打開,然後再次關閉改善....

jQuery('ul.children').slideUp(); 
jQuery('li.current_page_item ul.children').slideDown('medium'); 
jQuery('li.current_page_item').parent().slideDown('medium'); 
+0

在http://www.stackoverflow.com上發佈此問題 – Sorantis 2011-01-11 11:00:30

回答

1

如果你想要的東西向上滑動或下來,但不能同時使用這樣的事情:

// In one line: 
jQuery('ul.children').not(jQuery('ul.children:has(li.current_page_item), li.current_page_item ul.children').slideDown()).slideUp(); 

// In three more readable lines: 
var $active = jQuery('ul.children:has(li.current_page_item), li.current_page_item ul.children'); 
jQuery('ul.children').not($active).slideUp(); 
$active.slideDown(); 

或者,如果你想要的一切,開始了隱藏,然後滑下有源元件,使用此:

jQuery('ul.children').hide(); 
jQuery('ul.children:has(li.current_page_item), li.current_page_item ul.children').slideDown(); 

當然,你也可以使用$而不是jQuery,但我會堅持你的風格。