2011-02-15 44 views
0

我有嵌套UL S和LI个页最后一个孩子,我需要得到每个UL最后LI,所以我做:jQuery选择来获得,这并不有一个类

$('li:last-child') 

这很好。

但我需要扩展此因此它的每一个UL,其中LI可是没有一个给定的类(x)的最后一个子LI。例如:

<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

我怎样才能做到这一点优雅?

由于

回答

3

使用map()(docs)方法通过循环<ul>创建一个jQuery对象元素,并返回最后一个子元素<li>而不包含x类。

例子:http://jsfiddle.net/e2Da7/2/

var lastLisNoX = $('ul').map(function() { 
    return $(this).children('li:not(.x)').get(-1); 
}); 

编辑:更新与被张贴在讨论的HTML我的jsfiddle例子。

+1

+1就是爽:) – Sarfraz 2011-02-15 19:24:04

0

筛选出与类的元素。

$('li:not(.x):last-child') 

如果类是li元素之间的不同,即如果所有的元素都没有class="x"然后像

$('li[class=""]:last-child') 
+2

这不会工作,因为如果最后一个元素是'x`,`最后child`不会选择最近的,以前`li`是心不是`x` – 2011-02-15 19:14:11

相关问题