我有一个嵌套UL
和LI
页面,我需要获取每个LI
的最后一个UL
,所以我正在做:
$('li:last-child')
这很有效。
但是我需要对此进行扩展,以便获得每个LI
的最后一个UL
个孩子,其中LI
没有给定的类(x
)。例如:
<ul>
<li class="x">1</li>
<li>2</li>
<li class="x">3</li>
<li>4</li>
<li>5</li>
<li class="x">
6
<ul>
<li class="x">7</li>
<li>8</li>
<li class="x">9</li>
<li>10</li>
<li>11</li>
<li class="x">12</li>
<li class="x">13</li>
</ul>
</li>
</ul>
我需要返回LI
5和11(因为这些是他们的父ul
中没有.x
的最后一个孩子)
我怎样才能优雅地做到这一点?
由于
答案 0 :(得分:3)
使用map()
(docs)方法通过迭代<ul>
元素并返回最后一个没有<li>
类的子x
元素来创建jQuery对象。
示例: http://jsfiddle.net/e2Da7/2/
var lastLisNoX = $('ul').map(function() {
return $(this).children('li:not(.x)').get(-1);
});
编辑: 使用问题中发布的HTML更新了我的jsFiddle示例。
答案 1 :(得分:0)
使用类过滤掉元素。
$('li:not(.x):last-child')
如果li元素中的类不同,那就是如果所有元素都不是class="x"
那么类似
$('li[class=""]:last-child')