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.