2012-07-26 45 views
1

我有以下表結構(這是由方式菜單):如何使用jQuery .not()僅在當前級別上選擇第一個孩子?

<div id="mainmenu"> 
    <ul class="menu"> 
     <li class="item-435"> 
     <li class="item-468 active deeper parent"> 
      <a href="#">News</a> 
      <ul> 
       <li class="item-469 current active"> 
        <a href="/index.php/news/news-topaktuell">Topaktuell</a> 
       </li> 
       <li class="item-480"> 
        <a href="/index.php/news/events">Events</a> 
       </li> 
      </ul> 
     </li> 
     <li class="item-476"> 
     <li class="item-477"> 
     <li class="item-478"> 
     <li class="item-479"> 
    </ul> 
</div> 

我要附加在第一<li>一個click()事件偵聽器,以便它顯示頁面的標題。另一個<li>標籤也應該有一個click()偵聽器,但是如果發生這種事件,頭應該被隱藏;該標題默認顯示,所以標題只應顯示在主頁(第一個孩子)上。

我已經做了:

$('#mainmenu .menu li:not(:first-child)').click(function() { 
    //hide header 
}); 

$('#mainmenu .menu li:first-child').click(function() { 
    //show header 
}); 

但這種選擇從子列表中的第一個孩子也一樣,我不想要的。有沒有什麼優雅的方式來選擇所需的標籤?

+0

你可以嘗試'$('#mainmenu .menu')。children('li:first-child')'。孩子們只會選擇直系後代,而不會深入。 – Tallmaris 2012-07-26 10:58:28

回答

2

嘗試

$('#mainmenu .menu > li:not(:first-child)').click(function() { 
    //hide header 
}); 

$('#mainmenu .menu > li:first-child').click(function() { 
    //show header 
}); 
+0

是不是隻是:先?或者兩者都被接受? – Andre 2012-07-26 10:56:16

+0

@你是對的。在這種情況下:首先會更有意義。 – simoncereska 2012-07-26 11:01:20

0

希望這是你想達到什麼樣的?

http://jsfiddle.net/gRoberts/myVs9/

基本上當你點擊一個LI,你想要的UL內包含的,顯示/隱藏,同時保持你上可見單擊文本。

希望有幫助嗎?

相關問題