2013-08-05 79 views
-3

我有一系列的部分,具有像這樣不同類型的元素:查找每個循環的最後一個元素,無論元素類型的

<section> 
    <div>Something</div> 
    <a href="#">Some Copy</a> 
    <div>Something</div> 
    <a href="#">Some Copy</a> 
</section> 

<section> 
    <a href="#">Some Copy</a> 
    <div>Something</div> 
    <a href="#">Some Copy</a> <a href="#">Some Copy</a> 
    <div>Something</div> 
</section> 

我需要遍歷每個部分,找到最後一個元素,無論如果它是一個div或主播。

$("section").each(function(){ 
     var last = //find the last element 
     last.addClass('last'); 
}); 

我需要幫助定義變量last。通常,我只是使用css'last-childlast-of-type來標識每個部分中的最後一個元素,但由於存在不同類型的元素(錨點和div),我相信我需要使用javascript。 任何想法如何找到最後的元素?

+2

奇怪,但沒有人提到它:'$( 「部分:最後的孩子」)。addClass( '最後');'http://jsfiddle.net/Q24XW/ –

+1

見的jsfiddle,它找到最後孩子爲每個部分。順便說一句,如果類最後的目的是造型,你不應該使用javascript/jquery的所有,只有CSS –

回答

1

編輯:呃,呃,jQuery有一個選擇器,如Musa's answer所示。如果不使用jQuery(或者更喜歡「去突擊隊」)的人可能需要它。


在現代瀏覽器,你可以使用lastElementChild

$("section").each(function(){ 
    var last = this.lastElementChild 
    // Use `last` (possibly wrapped in a jQuery instance) 
}); 

(您可能想包裝在一個jQuery實例。)

在舊版本的瀏覽器,你可以使用lastChild然後通過previousSibling返回到最後一個元素(與文本節點,註釋節點等相反):

$("section").each(function(){ 
     var last = this.lastChild; 
     while (last && last.nodeType !== 1) { 
      last = last.previousSibling; 
     } 
     // Use `last` (possibly wrapped in a jQuery instance) 
}); 
+0

謝謝你的擴展答案 – JCHASE11

0

我足足用了同樣的方法,因爲@Musa。你可以在這裏看到:

http://jsfiddle.net/nRtsF/

$("section").each(function(){ 
     $(this).children(':last').addClass('last'); 
}); 
0

使用:last jQuery選擇。

$('section').find(':last').each(function() { 
    // Code here 
});