Um ein vereinfachtes Beispiel zu geben, habe ich den folgenden Block auf der Seite viele Male wiederholt (er wird dynamisch generiert):
<div class="box">
<div class="something1"></div>
<div class="something2">
<a class="mylink">My link</a>
</div>
</div>
Wenn ich darauf klicke, kann ich zum übergeordneten Link des Links gelangen mit:
$(".mylink").click(function() {
$(this).parents(".box").fadeOut("fast");
});
Allerdings ... muss ich zu dem <div class="something1">
eines bestimmten Elternteils gelangen.
Kann mir jemand sagen, wie ich mich auf ein übergeordnetes Geschwister beziehen soll, ohne direkt darauf verweisen zu können? Nennen wir es großen Bruder. Ein direkter Verweis auf den Klassennamen des großen Bruders würde dazu führen, dass jede Instanz dieses Elements auf der Seite ausgeblendet wird - was nicht der gewünschte Effekt ist.
Ich habe es versucht:
parents(".box .something1") ... no luck.
parents(".box > .something1") ... no luck.
siblings() ... no luck.
Jemand? Vielen Dank.
.parent()
nicht.parents()
Antworten:
Beim Aufruf
.parents(".box .something1")
werden alle übergeordneten Elemente zurückgegeben, die dem Selektor entsprechen.box .something
. Mit anderen Worten, es werden übergeordnete Elemente zurückgegeben, die.something1
sich innerhalb und innerhalb von befinden.box
.Sie müssen die Kinder des nächsten Elternteils wie folgt bekommen:
Dieser Code ruft
.closest
auf, um das innerste übergeordnete.children
Element mit einem Selektor abzugleichen, und ruft dann dieses übergeordnete Element auf, um den Onkel zu finden, den Sie suchen.quelle
parent()
ist das falsche Element..closest(...)
ist widerstandsfähiger und auch lesbarer.Das Durchqueren von Bäumen macht Spaß
Und noch viel mehr Möglichkeiten, diese Dokumente könnten hilfreich sein.
quelle
Dadurch wird der erste Elternteil mit Klasse gefunden,
box
dann wird die erste untergeordnete Klasse mit Regex-Übereinstimmung gefundensomething
und die ID abgerufen.quelle
Wenn ich Ihr Problem richtig verstanden habe,
$(this).parents('.box').children('.something1')
suchen Sie danach?quelle
Sie können
.each()
mit.children()
und einen Selektor in der Klammer verwenden:quelle