2008-12-18 14 views
16

Gegeben ein DOM-Element wie finde ich seine nächste Elternteil mit einer bestimmten CSS-Klasse?Suchen geeignete Eltern mit jQuery

$(".editButton").click(function() { 
    (magic container selector goes here).addClass("editing"); 
}); 

Ich will nicht viel oder $ verwenden, (...). Parent(). Parent(), da will ich nicht auf eine bestimmte dom Struktur gebunden sein. Dies sollte

$(this).parents('.classYouWant:first').addClass("editing"); 

Antwort

31
+1

Bin ich nicht richtig im Denken, dass alle jquery Funktionen tatsächlich eine Liste zurückgeben. Wenn ja, möchtest du vielleicht $ (this) .parents ('. ClassYouWant: first') machen (probier es aus!) – Jennifer

+0

@Jennifer: Du hast Recht, wenn das Element mehr als 1 Elternteil hätte, würde es alle bearbeiten Sie. Du hättest eine Antwort schreiben sollen. Ich würde es akzeptieren. –

+0

Also: zuerst, in diesem Beispiel, erhält das nächste Elternteil $ (this) mit .classYouWant? so funktioniert es auf dem DOM? –

3

Verwenden .parents(".yourClass") statt .parent() arbeiten

2

können Sie die Auswahl Eltern verwenden. zB findet $(".myclass:parent").something(); alle Elemente mit der Klasse myclass, die Kinder haben.

+0

Obwohl korrekt, wird die Frage nicht behandelt, da es das übergeordnete Element für ein bestimmtes dom-Element nicht findet. –

11
$(this).closest('.yourselector') 

Wie der Name schon sagt, findet den nächsten Vorfahren für this Element.

+0

+1 Dies ist meine Vorliebe, wenn ich weiß, dass ich nur nach 1 Element bin – Evildonald