2010-01-14 96 views
4

給定一個unorder嵌套列表,如果發現「li」的第一個匹配項,那麼如何找到處於同一級別的所有兄弟?jQuery:找到相同元素類型的兄弟姐妹

root.find('li:first')...? 

更新:我的問題沒有正確制定。我其實需要知道以下內容。如果我有對元素的引用,那麼如何找到元素兄弟並創建一個包含元素本身和同一元素類型的兄弟(在本例中爲「li」)的集合?

回答

9

如果你想包括原始的元素,以及,你需要

$(this).siblings("li").andSelf(); 

編輯:的jQuery已經過時andSelf。這仍然是頂級的答案,因此以備將來使用加回可能是你想要什麼

$(this).siblings("li").addBack(); 
+0

+1 - 現貨的答案 – 2010-01-15 16:28:55

+0

注意.andSelf()有利於.addBack的被棄用([選擇])HTTP ://api.jquery.com/addBack/ – Andrew 2013-02-05 16:48:03

4

如果你正在處理一個列表,你只需要看看兄弟姐妹。與該列表本身只具有li元素,而不是其他,所以下面就足夠了:

$(this).siblings().andSelf(); 

如果你不知道該節點名稱的,可以提起,從第一個元素:

var elem = $("#container :first-child"); 
elem.siblings(elem.prop("nodeName")).andSelf(); 

如果你發現自己需要一遍又一遍地執行此邏輯,它可能是明智的擴展jQuery.fn提供一種方法,爲自己:

jQuery.extend(jQuery.fn, { 
    typeSiblings: function(){ 
     return this.siblings(this.prop("nodeName")); 
    } 
}); 
其中每

MITS你調用新的方法,像任何其他濾波方法:

$("#container :first-child").typeSiblings().andSelf(); 

因此,在這種情況下,任何類型的第一個孩子是,那是姐弟的類型,我們將找回的。如果是段落,我們會得到所有段落。如果它是一張圖片,我們將獲得所有圖片。但請注意,這是基於標記名,而不是類(儘管這將很容易完成)。