Jquery - finden Sie die nächste Eingabe:text-element nach einem element bekannt
Habe ich eine id für ein <tr id="tagTR">
Angesichts der oben genannten, ist es möglich, finden die nächsten input:text
element unabhängig von anderen mark-up dazwischen . Gibt es ein jQuery-Selektor, dass ich für dieses Szenario?
Beispiel :
<tr id="tagTR">
</tr>
<tr id="tagRed">
<td> </td>
</tr>
<div>
<tr>
<td>
<input> //This is what I want to get to.
</td>
</tr>
</div>
Bitte posten Sie Ihre eigentliche markup. Sie haben
Sie benötigen
Du hast Recht, es ist ungültiges HTML, aber es war nur Beispielcode, den ich bis auf die Fliegen, die Frage war mehr über die Suche nach dem nächsten input-element. Trotzdem danke.
Dank Jeff - das sollte helfen.
<tr>
Elemente mit <div>
Eltern und Geschwister, das ist ungültiges HTML.Sie benötigen
nextAll()
Suche alle gleichrangigen Verhältnis zu dem bekannten marker element und wenn was Sie suchen, nicht finden, schnappen Sie sich die Liste der .parents()
von dem bekannten element und eine Schleife durch jedes Geschwister von jedem Elternteil zu finden, die das element in Frage, grundsätzlich den Aufruf einer nextAll()
auf jeder Elternteil von Ihr bekannte element.Du hast Recht, es ist ungültiges HTML, aber es war nur Beispielcode, den ich bis auf die Fliegen, die Frage war mehr über die Suche nach dem nächsten input-element. Trotzdem danke.
Dank Jeff - das sollte helfen.
InformationsquelleAutor user1006072 | 2012-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich dachte, diese Frage war sehr interessant. Es scheint, andere Lesen diese, wie, finden Sie die nächste Eingabe unter Geschwistern. Aber ich lese es so - finden, die mir die nächste Eingabe, egal was. Ich weiß nicht, ob es bei einem Geschwister, einem Elternteil oder einem Elternteil, die Geschwister. Dies ist, was ich kam mit, basierend auf feedback, das ich erhielt von diese Frage.
http://jsfiddle.net/GesSj/1
gibt es leider nicht. Es ist eine ziemlich ungewöhnliche Frage, denn in der Regel gibt es eine GEWISSE Struktur, die Sie sich verlassen können. Dann würden Sie als Nächstes, nextAll, filtern oder suchen.
Ich posted eine andere Lösung basiert auf Ihnen. (wobei, da ich gerade festgestellt, Sie haben nicht erhalten keine Benachrichtigungen, von meinem schweigen)
InformationsquelleAutor mrtsherman
Check it out: zog dieser in eine vollständige Frage und Antwort
Basiert auf der genial Antwort von @mrtsherman, schrieb ich diese umfassendere Lösung:
Dann können Sie es verwenden, wie diese:
Ich würde senden Sie eine PR für diese die auf jQuery-lib, wenn ich wusste, dass mein code richtig optimiert, und wenn es okay war Herr Sherman T es, Bedeutung ich denke, dies sollte eine core-Methode auf jQuery! 😛
InformationsquelleAutor cregox
@Cawas - schöne Lösung, aber ich empfehle es nicht übertrieben, wegen der
$('*')
ist teuer 😉Unabhängig davon, dass ich erweiterte es für meine Bedürfnisse:
Also, wenn
returnItselfIfMatched
eingestellt isttrue
es gibt sich, wenn es passt der Selektor selbst. Nützlich, wenn Sie nicht wissen, welches element anruft, und Sie sind auf der Suche nach genau selbst.$('*')
... Nun, im Grunde hat nur eine ganz bestimmteif
es, die einen ganz engen Anwendungsfall. Ich würde sagen, das würde besser gehen als erweiterte Funktion in Ihrem code oder direkt auf den code selbst.Ich benutze es in großer Formen, wo habe ich zu wissen, welches element den Fokus hat, mehr Elemente, basierend auf Schlüssel-short-cuts. Dass die Benutzer oft zu tun, dass die Verknüpfungen, wobei der Schwerpunkt schon im Ziel selbst . So ist es mehr einfach, um es in das plugin zu produzieren, weniger code-Zeilen. Aber unabhängig von diesem, warum nicht machen diese if-Anweisung. Es verringert die DOM-Traversierung und Sie erhalten keine null-Rendite, in diesem Fall. Die
$('*')
könnte optimiert werden, indem eine rekursive Traversierung durch die nächst höhere Ebene der Rückkehr bei passenden das erste element. Aber für mich in meinem Projekt ist es ok.Grüße AndréJetzt bin ich mir nicht so sicher, dass der universal-Selektor Leistung Treffer, von selbst. Haben Sie zufällig besser weiß?
InformationsquelleAutor Andre Lehnert
Können Sie nicht ein
div
tag zwischenTR's
. Es ist kein gültiges markup.Finden die
input
element aus den genanntentr
Sie können versuchen, diese.nextAll()
nennen.In diesem Fall wissen wir nicht, bis das, was auf der übergeordneten Ebene, OP schauen will. Ich denke OP will sich in allen anderen Zeilen.
Es wäre nicht eine Ebene, es wäre allen Eltern, bis die nächste Eingabe gefunden wird oder bis Sie den Anfang übergeordneten HTML-Format zu verwenden
.parents()
eine Schleife durch alle Eltern der TR-Knoten und mit jedem Elternteil nutzen.nextAll()
Suche alle Geschwister von ihm für den input. Ich habe gerade festgestellt, dass selbst dann, das würde nicht funktionieren, gerade weil die übergeordneten Knoten könnte noch einen Eingang in, vor, bei denen der tag-element ist.Das macht Sinn, aber es hängt alles davon ab, OP-Kenntnisse von markup. Wir suchen Sie zunächst in den Geschwistern, wenn nicht vorhanden, dann suchen Sie in einer Ebene nach oben und halten Sie bewegen eine Ebene, bis wir es finden.
Auch die Sache im Auge zu behalten, wenn mit
.parents()
und.nextAll()
zu finden, der Eingang ist dies zum Beispiel jsfiddle.net/WNsaD auf der HTML-markup. Sie müssten sicherstellen, dass der Eingang gefunden, vor/in front of the marker element und nicht wirklich dahinter.InformationsquelleAutor ShankarSangoli
Können Sie mit "weiter":
next
sieht nur auf den unmittelbar folgenden gleichgeordneten, und gibt es zurück, wenn Sie mit dem selector.Hi Troy - das hilft nicht. James Recht .die next () -
InformationsquelleAutor Troy Barlow