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.