2009-09-04 33 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

相关问题