2011-02-15 41 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

相關問題