$(t).html()
kehrt zurück
<td>test1</td><td>test2</td>
Ich möchte die zweite td
vom $(t)
Objekt abrufen . Ich habe nach einer Lösung gesucht, aber nichts hat bei mir funktioniert. Irgendeine Idee, wie man das zweite Element bekommt?
jquery
jquery-selectors
Upvote
quelle
quelle
$(t).children('td').eq(1)
und$(t).children()[1]
find()
jQuery-Methode? Wie in$(t).find('td').eq(1)
, um die zweite zu bekommen<td>
, wennt
zum Beispiel eine Tabelle war und ich mehr als einen Knoten nach unten schauen musste?.children('td').eq(1)
aus irgendeinem Grund nicht zur Arbeit kommen, aber es hat gut.find('td').eq(1)
funktioniert.Hier ist eine Lösung, die möglicherweise klarer in Code einzulesen ist:
So erhalten Sie das 2. Kind einer ungeordneten Liste:
Und ein ausführlicheres Beispiel: Dieser Code erhält den Text des Attributs 'title' des zweiten untergeordneten Elements der UL, das als 'my_list' identifiziert wurde:
In diesem zweiten Beispiel können Sie die 'ul' am Anfang des Selektors entfernen, da sie redundant ist, da eine ID für eine einzelne Seite eindeutig sein sollte. Es dient nur dazu, dem Beispiel Klarheit zu verleihen.
Hinweis zu Leistung und Speicher : Diese beiden Beispiele sind gute Leistungsträger, da sie jquery nicht dazu bringen, eine Liste von ul- Elementen zu speichern , die anschließend gefiltert werden mussten.
quelle
ul
damit wir nicht danach suchen müssen.Wie ist das:
WICHTIGES UPDATE:
Abgesehen davon, wie schön die Antwort aussieht, müssen Sie auch über die Leistung des Codes nachdenken. Daher ist es auch wichtig zu wissen, was genau in der
$(t)
Variablen enthalten ist. Ist es ein Array von<TD>
oder ist es ein<TR>
Knoten mit mehreren<TD>s
darin? Weitere Informationen finden Sie in den jsPerf-Ergebnissen in einer<ul>
Liste mit 50<li>
Kindern:http://jsperf.com/second-child-selector
Die
$(t).first().next()
Methode ist hier bei weitem die schnellste.Wenn Sie jedoch den
<tr>
Knoten nehmen und die untergeordneten Elemente finden<td>
und denselben Test ausführen, sind die Ergebnisse nicht dieselben.Ich hoffe es hilft. :) :)
quelle
Ich habe es hier nicht erwähnt gesehen, aber Sie können auch CSS-Spezifikationsselektoren verwenden. Siehe die Dokumente
quelle
Versuche dies:
oder
quelle
Zusätzlich zur Verwendung von jQuery-Methoden können Sie die native
cells
Sammlung verwenden, die<tr>
Sie erhalten.Angenommen, es
t
handelt sich um ein DOM-Element, können Sie die Erstellung des jQuery-Objekts umgehen.quelle
Es ist überraschend zu sehen, dass niemand die native JS-Methode erwähnt hat.
Ohne jQuery:
Greifen Sie einfach auf die
children
Eigenschaft des übergeordneten Elements zu. Es wird eine Live-HTMLCollection von untergeordneten Elementen zurückgegeben, auf die über einen Index zugegriffen werden kann. Wenn Sie das zweite Kind bekommen möchten:In Ihrem Fall könnte so etwas funktionieren: (Beispiel)
Sie können auch eine Kombination von CSS3-Selektoren / verwenden
querySelector()
und verwenden:nth-of-type()
. Diese Methode funktioniert in einigen Fällen möglicherweise besser, da Sie in diesem Fall auch den Elementtyp angeben könnentd:nth-of-type(2)
(Beispiel).quelle
Verwenden Sie die
.find()
Methode$(t).find("td:eq(1)");
td:eq(x) // x is index of child you want to retrieve. eq(1) means equal to 1. //1 denote second element
quelle
Sie können in jQuery zwei Methoden verwenden, wie unten angegeben:
Verwenden von jQuery: nth-child Selector Sie haben die Position eines Elements als Argument angegeben, das 2 ist, wenn Sie das zweite li-Element auswählen möchten.
Verwenden von jQuery: eq () Selector
Wenn Sie das genaue Element erhalten möchten, müssen Sie den Indexwert des Elements angeben. Ein Listenelement beginnt mit einem Index 0. Um das 2. Element von li auszuwählen, müssen Sie 2 als Argument verwenden.
Siehe Beispiel: Zweites untergeordnetes Element der Liste in jQuery abrufen
quelle