Deuxième enfant à l'aide de jQuery
$(t).html()
retourne
<td>test1</td><td>test2</td>
Je veux récupérer la deuxième td
de la $(t)
objet. J'ai cherché une solution mais rien n'a fonctionné pour moi. Aucune idée de la façon d'obtenir le deuxième élément?
Vous devez vous connecter pour publier un commentaire.
saisir le deuxième enfant:
ou, prenez le deuxième enfant
<td>
:$(t).children('td').eq(1)
et$(t).children()[1]
find()
méthode jQuery? Comme dans$(t).find('td').eq(1)
pour obtenir le deuxième<td>
, sit
était, disons, une table et j'ai besoin de regarder vers le bas plus de 1 nœud?.children('td').eq(1)
de travailler pour une raison quelconque, mais.find('td').eq(1)
a très bien fonctionné.Voici une solution qui est peut-être plus clair à lire dans le code:
Pour obtenir le 2ème enfant d'une liste non ordonnée:
Et plus élaboré exemple:
Ce code récupère le texte de l'attribut "title" de la 2ème élément enfant de l'UL identifiée comme "my_list':
Dans ce deuxième exemple, vous pouvez vous débarrasser de la " ul " au début de la sélection, comme c'est redondant, car un ID doit être unique dans une page unique.
Il est là juste pour ajouter de la clarté à l'exemple.
Note sur de la Performance et de la Mémoire, ces deux exemples sont de bons performants, car ils ne font pas jquery enregistrer une liste de ul les éléments qui devaient être filtrée par la suite.
ul
de sorte que nous n'aurons pas à le rechercher.Comment est-ce:
MISE À JOUR MAJEURE:
En dehors de la beauté de la réponse ressemble, vous devez également donner une pensée à l'exécution du code. Par conséquent, il est également relavant de savoir ce qui est exactement dans la
$(t)
variable. Est-il un tableau de<TD>
ou est-il un<TR>
nœud avec plusieurs<TD>s
à l'intérieur?Pour illustrer ce point, voir le jsPerf les scores sur une
<ul>
liste avec 50<li>
enfants:http://jsperf.com/second-child-selector
La
$(t).first().next()
méthode est la plus rapide ici, et de loin.Mais, d'autre part, si vous prenez le
<tr>
nœud et de trouver la<td>
les enfants et les et exécuter le même test, les résultats ne seront pas les mêmes.Espère que cela aide. 🙂
Je ne le vois pas mentionné ici, mais vous pouvez également utiliser CSS sélecteurs. Voir les docs
Essayez ceci:
ou
En outre à l'aide de méthodes jQuery, vous pouvez utiliser le natif
cells
de la collection que la<tr>
vous donne.En supposant
t
est un élément du DOM, vous pouvez contourner le jQuery création de l'objet.Il est surprenant de voir que personne n'a mentionné le natif JS façon de le faire..
Sans jQuery:
Simplement accéder à la
enfants
de la propriété de l'élément parent. Il sera de retour une vivre HTMLCollection des enfants à des éléments qui peuvent être accessibles par un index. Si vous voulez obtenir le deuxième enfant:Dans votre cas, quelque chose comme cela pourrait fonctionner: (exemple)
Vous pouvez également utiliser une combinaison de sélecteurs CSS3 /
querySelector()
et d'utiliser:nth-of-type()
. Cette méthode peut mieux fonctionner dans certains cas, parce que vous pouvez également spécifier le type d'élément, dans ce castd:nth-of-type(2)
(exemple)Utilisation
.find()
méthode$(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