2010-01-14 5 views
4

Étant donné une liste imbriquée de désinscription, si l'on trouve une première occurrence du "li", comment trouver tous les frères et sœurs qui sont au même niveau?jQuery: trouver des frères et sœurs du même type d'élément

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

Mise à jour: Ma question n'a pas été formulée correctement. J'ai vraiment besoin de savoir suivre. Si j'ai une référence à l'élément, comment puis-je trouver des éléments frères et créer un ensemble qui inclura l'élément lui-même et les frères et sœurs du même type d'élément, dans ce cas 'li'?

Répondre

9

Si vous souhaitez inclure l'élément d'origine aussi bien, vous aurez besoin

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

Edit: jQuery a désapprouvée andSelf. Ceci est encore la réponse haut, donc pour une utilisation future peut-être ce rajout que vous voulez

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

+1 - point sur la réponse –

+0

Notez que .andSelf() a été dépréciée en faveur de .addBack ([sélection]) http : //api.jquery.com/addBack/ – Andrew

4

Si vous avez affaire à une liste, il suffit de regarder les frères et soeurs. La liste elle-même avec seulement ont li éléments, et rien d'autre, de sorte que le suivant sera suffisant:

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

Si vous n'êtes pas sûr de la nodeName, vous pourriez soulever que du premier élément:

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

Si vous vous trouvez avoir besoin d'effectuer cette logique encore et, il pourrait être judicieux de prévoir une méthode pour vous-même en étendant jQuery.fn:

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

qui par MITS vous d'appeler la nouvelle méthode comme une autre méthode de filtre:

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

Donc dans ce cas, quel que soit le type du premier enfant est, ce sont les types de frères et sœurs, nous récupérerons. Si c'est un paragraphe, nous aurons tous les paragraphes. Si c'est une image, nous aurons toutes les images. Notez cependant que ceci est basé sur la variable seule, et non sur la classe (bien que cela soit aussi facile à réaliser).

Questions connexes