2009-09-04 35 views
1

我有一個嵌套列表如下:jQuery的:獲取類型的第一個元素頂UL嵌套列表

<ul class="list"> 

    <li class="list_item_type_1"> 
     <ul class="list"> 
      <li class="list_item_type_2">Unnested item</li> 
     </ul> 
    </li> 

    <li class="list_item_type_2">Unnested item</li> 

</ul> 

使用jQuery我想在第一.list所有.list_item_type_2前添加一個列表項。

我寫這樣的:

$('.list:first').find('li.list_item_type_2:first').before('<li class="list_item_type_1">Nested list (...)</li>'); 

這不會工作打算,因爲腳本會在第二.list第一.list_item_type_2並追加新的代碼,而不是存在。

如何在第一個ul中保留搜索並防止其進入底層的ul元素?

乾杯!

回答

1

也許嘗試在一個表達式中結合選擇器?

$('.list:first > LI.list_item_type_2:first').before('<li class="list_item_type_1">Nested list (...)</li>'); 

>選擇符只匹配直接孩子,as explained in the doc

+0

謝謝。這工作! – Christoffer 2009-09-04 11:05:48

2

首先,我建議以這種方式構建HTML。使用jQuery來組裝HTML。它負責逃逸和所有其他有用的東西:

$("<li></li>").addClass("list_item_type_1") 
    .text("Nested list (...)") 
    .prependTo("ul.list:first > li.list_item_type:first"); 

而且,總是在一個裸體的類選擇(「.LIST」)在可能情況下使用標籤選擇器(「ul.list」)。它的在大多數瀏覽器上的速度更快了

+0

太慢了......我也喜歡這樣,就像你說的那樣,使用jQuery構建HTML的更好方法。 +1 – peirix 2009-09-04 11:05:55

相關問題