2010-03-12 52 views
7

tôi có mã này:Chọn tất cả li nhưng không phải trẻ em

$li = $("li", this) 

Đó là chọn tất cả các li 's trong mã của tôi. Điều này hoạt động tốt tuy nhiên tôi muốn $li để loại trừ các li 's mà là trong một menu phụ.

<ul id="navigation"> 
     <li><a href="#">blah 1</a></li> 
     <ul id="subnav"> 
      <li><a href="#">sub 1</a></li> 
      <li><a href="#">sub 2</a></li> 
      <li><a href="#">sub 3</a></li> 
     </ul> 
     </li> 
     <li><a href="#">blah 2</a></li> 
     <li><a href="#">blah 3</a></li> 
     <li><a href="#">blah 4</a></li> 
     <li><a href="#">blah 5</a></li> 
    </ul> 

Vì vậy, $li sẽ chỉ tham chiếu blah không phải của phụ.

tôi nghĩ rằng nó là một cái gì đó như:

$li = $("li", this).parents() 

Nhưng điều này không làm những gì tôi muốn.

Trả lời

19

Chỉ cần sử dụng bộ chọn con >:

$("#navigation > li") 
13

Bạn muốn sử dụng bộ chọn con ngay lập tức, >:

$li = $('#navigation > li'); 
+1

@ David: nhìn vào timestamps của chúng tôi - giống hệt nhau thứ hai :-) –

+1

@Andy: Tuyệt vời. 1 cho bạn, sau đó. –

4
var li = $("#navigation > li"); 

Các > chọn chỉ có trẻ em trực tiếp

+1

+1 Mọi người khác đều nhận được tín dụng :-P – Jeremy

0

tương lai Nhân viên Google có thể tìm thấy câu trả lời này hữu ích nếu t hey đang ở đây (như tôi) tìm kiếm Chọn tất cả li mà không cần bất kỳ trẻ em

$("#mylist li:not(:has(ul))") 

hoặc

$("#mylist li:not(:has(li))") 
Các vấn đề liên quan