jQuery:: “$(this).next().next()" funktioniert, aber "$(this).next('.div')" Nicht
Okay, ich werde versuchen, diese Informationen zu verbergen individuell.
<img class="arrow" src="images/navigation/arrowright.png">
<H2>More Information</H2>
<div class="box">
<h2>Bibendum Magna Lorem</h2>
<p>Cras mattis consectetur purus sit amet fermentum.</p>
</div>
<img class="arrow" src="images/navigation/arrowright.png">
<H2>A Second Group of Information</H2>
<div class="box">
<h2>Bibendum Magna Lorem</h2>
<p>Cras mattis consectetur purus sit amet fermentum.</p>
</div>
Es funktioniert, wenn ich das so Schreibe:
$(".arrow").click(function() {
$(this).next().next().slideToggle();
});
aber nicht, wenn ich dies tun:
$(".arrow").click(function() {
$(this).next('.box').slideToggle();
});
Was passiert ist, macht die zweite option nicht funktioniert? Ich habe es seit Tagen und kann nicht blutig, es herauszufinden! Ich Schätze Ihren input!
InformationsquelleAutor der Frage fjaxyu | 2015-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem
Wenn man sich die Dokumentation für
.next(selector)
es nicht "finden" der nächste Geschwister, passt der Selektor. Eher sieht es so aus, NUR das nächste Geschwister und gibt NUR das element, wenn Sie mit dem selector ist nicht, was Sie wollen.Hier ist, was der doc für
.next()
sagt:So können Sie sehen, dass
.next(".box")
Blick auf dash2
element folgt unmittelbar auf Ihre.arrow
- element (das ist das nächste Geschwister-element) und dann vergleichen, dass die.box
selector und da Sie nicht übereinstimmen, wird eine leere jQuery-Objekt.Eine Lösung Mit .nextAll()
Wenn Sie möchten, dass das nächste Geschwisterchen, das entspricht einem Selektor, können Sie diese verwenden:
Findet alle die Geschwister, die Folgen, die mit dem Selektor extrahiert dann nur der erste.
Erstellen Sie Ihre Eigenen .findNext () - Methode
Ich habe so oft gefragt, warum jQuery nicht eine Methode, die ich gemacht habe, selbst einer:
Und dann würden Sie gerade verwenden:
Option: Fügen Sie Mehr Struktur, um das HTML zu Machen, die Dinge Einfacher und Flexibler
FYI, einen gemeinsamen Ansatz, um Probleme wie dieses ist, um einen mit div um jede Gruppe von DOM-Elementen, wie:
Dann können Sie code verwenden, der ist etwas weniger empfindlich auf die exakte Positionierung von Elementen:
Dieser geht bis zu der mit und gemeinsame Eltern-mit
.closest()
und verwendet dann.find()
zu finden, die.box
element in dieser Gruppe.InformationsquelleAutor der Antwort jfriend00