Holen Sie sich das nächste element mit einer bestimmten Klasse, die nach einem bestimmten element
Ich habe ein HTML-markup wie dieses:
<p>
<label>Arrive</label>
<input id="from-date1" class="from-date calender" type="text" />
</p>
<p>
<label>Depart</label>
<input id="to-date1" class="to-date calender" type="text" />
</p>
<p>
<label>Arrive</label>
<input id="from-date2" class="from-date calender" type="text" />
</p>
<p>
<label>Depart</label>
<input id="to-date2" class="to-date calender" type="text" />
</p>
Möchte ich, um das nächste element nach von Terminen, um das entsprechende bis-Datum. (Layout ist ein wenig komplexer, aber vom Termin ab-Termin-Klasse und Termin-date-Klasse).
Ist dies versuche ich zu tun, möchte ich aus dem Datum-element und finden Sie das nächste element im dom mit to-date-Klasse. Ich versuchte dies:
$('#from-date1').next('.to-date')
aber es ist mir leer jQuery element. Ich denke, das ist, weil next
liefert den nächsten Geschwisterknoten passenden Selektor. Wie bekomme ich die entsprechenden to-date
?
InformationsquelleAutor rubyprince | 2012-07-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte nicht finden einen direkten Weg, dies zu tun, so schrieb ein wenig rekursiven Algorithmus.
Demo: http://jsfiddle.net/sHGDP/
nextInDOM()
Funktion nimmt 2 Argumente, nämlich das element zu Beginn der Suche aus und der Selektor übereinstimmen.statt
können Sie verwenden:
Code
Froh, dass es funktionierte. 🙂 Es war ein wirklich cooles problem zu lösen, in der Tat ich denke, so etwas wie
nextInDOM()
wird nützlich sein, in eine Menge von Orten.Ja, ich habe es in meine Website, um die Standard-Kalender werden die Termine für das Datum, eine person auswählt, die für die ab-Datum. Vielen Dank und ich werde auf jeden Fall werden mit dieser Funktion für meine zukünftigen Projekte auch.
InformationsquelleAutor techfoobar
.next('.to-date')
nichts zurück, denn Sie haben eine zusätzlichep
zwischenMüssen Sie
.parent().next().find('.to-date')
.Müssen Sie möglicherweise anpassen, wenn Ihre dom ist komplexer als dein Beispiel. Aber im wesentlichen läuft es auf so etwas wie dieses:
edit: Es ist viel besser und schneller, nur sehen Sie für die ID. Der folgende code sucht alle aus-Termine bekommt und der laut-Termine:
Werfen Sie einen Blick auf die Beispiel.
nun, dies ist sehr ineffizient...nur suchen die id dann! Sie haben eine id, so verwenden Sie es - dies ist viel schneller als das Durchlaufen der dom mit einem rekursiven Algorithmus. Ich passe meine Antwort zu zeigen, wie Sie das tun.
InformationsquelleAutor Christoph
versuchen
Ich Stimme zu, was Sie besorgt sind. Aber auch andere Formen der Traversierung wird mehr scripting. Weiter glaube ich nicht, dass die Traversierung durch die gesamte DOM wird viel Zeit für diese Ebene zu suchen.
InformationsquelleAutor Tejasva Dhyani
Verwenden JS. zu erhalten der Schlüssel-Nummer aus Ihrem id. Analyse es als Ausgabe die Anzahl. Verwenden JQ. selecter kombinieren Sie den string mit der Sie wollen als + dieser Zahl. Hoffe, dies kann Ihnen helfen, zu.
InformationsquelleAutor Chung Solomon