w3schools uso span second first child jquery jquery-selectors children

uso - jquery: children() vs child selector ">"



jquery second child (3)

De los documentos de jQuery:

"Los métodos .find () y .children () son similares, excepto que este último solo viaja un nivel hacia abajo en el árbol DOM".

Recomiendo usar esto:

if ($(this).find(''.myclass'').length){ alert(''in here''); }

Aclamaciones

Tengo una tabla que tiene una sección similar a la siguiente:

<tr> <td> <span class="myclass"></span> </td> <tr>

my $ (esto) se establece en el elemento tr y estoy tratando de acceder a los elementos Span que tienen la clase "myclass" establecida. Lo siguiente parece funcionar:

if ($(this).children(''td'').children(''span'').is(''.myclass'')){ alert(''in here''); }

pero al intentar usar esto:

if ($(this).children("td > span").is(''.myclass'')){

o esto:

if ($(this).children("td span").is(''.myclass'')){

No es asi. Pensé que cualquiera de los 2 anteriores daría resultados similares (aunque a través de diferentes métodos) pero aparentemente no.

¿Que me estoy perdiendo aqui?

¡Gracias!


Expliqué esto here .

La diferencia es que el primer selector está completamente dentro de la llamada de los children , mientras que el segundo no lo está.

Por lo tanto, el primero busca todos los hijos de this que también coincidan con td > span . (En otras palabras, todos los { <span> s hijos de <td> s } (el selector) que son ellos mismos hijos directamente de this )

El segundo encontrará todos los <td> hijos de this , luego encuentra todos los <span> s en esos <td> s.


children(selector) solo hará coincidir aquellos niños que coincidan con selector . Ninguno de los hijos de tr (el td s) puede coincidir con td > span , ya que tr no tiene elementos hijo de span , solo td s y td > span !== td .

La documentation también es bastante clara al respecto:

Obtenga los elementos secundarios de cada elemento en el conjunto de elementos emparejados, opcionalmente filtrados por un selector.

Lo que podrías querer en cambio es .find() :

$(this).find("td > span")

Devuelve todos los descendientes , no solo los hijos, que coinciden con el selector.