Der sauberste Weg, um das nächste Geschwister in jQuery zu bekommen
http://jsfiddle.net/mplungjan/H9Raz/
Nachdem schon einige tests mit der nächsten('a') und so habe ich endlich eine gefunden, die funktioniert.
Ich Frage mich nur, warum Sie auf weiter('a') nicht, oder am nächsten oder ähnliches. Gibt es Reiniger Möglichkeiten, wie man an die href der link, nachdem die checkbox klicke ich?
$('form input:checkbox').click(function () {
alert($(this).nextAll('a').attr("href"));
});
<form>
<div>
<input type="checkbox" name="checkThis" value="http://www.google.com" />Check here<br/>
<a href="http://www.google.com">click here</a><br>
<input type="checkbox" name="checkThis" value="http://www.bing.com" />Check here<br/>
<a href="http://www.bing.com">click here</a>
</div>
</form>
Kommentar zu dem Problem
Sie können nicht verwenden Sie
next()
, weil die <br>
- element ist im Weg. So, nextAll()
ist in der Tat die beste Lösung, soweit ich das sagen kann. Dies natürlich auch funktioniert. Aber ist hackier und erfordert die <br> - tag. jsfiddle.net/AFFr3
@mplungjan können Sie Graben die BR-Elemente, indem er die ANKER und die oder-EINGANG (oder beide) werden block-level-Elemente (natürlich nur lokal, nicht für die ganze Seite). Das wäre meine Empfehlung... demo: jsfiddle.net/H9Raz/4
@Fred @Arend, aber ich habe weiter("a") - ignorieren sollte, der br würde ich denken!
@Andy: Sie Hinzugefügt, lang:html-Ding - interessant. Werde versuchen daran zu denken, dass.
InformationsquelleAutor der Frage mplungjan | 2011-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rücksicht auf die oben genannten Anmerkungen:
Sie nicht schreiben:
next("a")
, weil nächste() nur versucht, auf dem nächsten element. Auf die<br>
element und match nichts.closest("a")
, weil engsten() geht der Vorfahren Kette, beginnend mit dem element selbst, und daher lassen die<a>
Elemente.Sie kann schreiben:
next().next()
, als Arend schlägt. Das ist wohl die Schnellste Lösung, aber es macht die<br>
Elemente obligatorisch.nextAll("a")
, aber zurückgeben kann mehrere Elemente (und so tun, mit Ihrem markup-Beispiel). Verkettung in ersten() würde es verhindern, aber nextAll() wäre noch zu iterieren über alle die nächsten Geschwister, die machen es langsam, je nach Komplexität des markup in Ihrem<div>
Elemente.nextUntil("a").last().next()
, die nur er iteriert über die nächsten Geschwister, bis es findet einen link, dann liefert den nächsten Geschwisterknoten des letzten Elements abgestimmt. Es könnte schneller alsnextAll()
wieder, je nach Ihrem markup.InformationsquelleAutor der Antwort Frédéric Hamidi
Oder, Sie könnte verwenden Sie einfach die jQuery built-in-Funktion
.siblings()
https://api.jquery.com/siblings/
InformationsquelleAutor der Antwort Peter Graham
Unten code war für mich
InformationsquelleAutor der Antwort Ricky