javascript - primer - recorrer elementos de un div jquery
Contar los elementos div hijos inmediatos usando jQuery (11)
Tengo la siguiente estructura de nodo HTML:
<div id="foo">
<div id="bar"></div>
<div id="baz">
<div id="biz"></div>
</div>
<span></span>
</div>
¿Cómo cuento el número de hijos inmediatos de foo
, que son de tipo div
? En el ejemplo anterior, el resultado debería ser dos ( bar
y baz
).
Con la versión más reciente de jquery, puede usar $("#superpics div").children().length
.
En respuesta a mrCoders, responda usando jsperf, ¿por qué no solo usa el nodo dom?
var $foo = $(''#foo'');
var count = $foo[0].childElementCount
Puede probar la prueba aquí: http://jsperf.com/jquery-child-ele-size/7
Este método obtiene 46,095 op / s mientras que los otros métodos en el mejor de 2000 op / s
Recomiendo usar $(''#foo'').children().size()
para un mejor rendimiento.
He creado una prueba jsperf para ver la diferencia de velocidad y el método children()
derrotó al enfoque selector de niños (#foo> div) al menos un 60% en Chrome (canary build v15) 20-30% en Firefox (v4) .
Por cierto, no hace falta decir que estos dos enfoques producen los mismos resultados (en este caso, 1000).
[Actualizar] Actualicé la prueba para incluir el tamaño () frente a la prueba de longitud, y no hacen mucha diferencia (resultado: el uso de la length
es ligeramente más rápido (2%) que el size()
)
[Actualización] Debido al marcado incorrecto visto en el OP (antes de la actualización ''markup validated''), tanto $("#foo > div").length
& $(''#foo'').children().length
result lo mismo ( jsfiddle ). Pero para una respuesta correcta para obtener SOLO los niños ''div'', uno DEBE usar el selector de niños para un rendimiento correcto y mejor
$("#foo > div")
selecciona todos los divs que son descendientes inmediatos de #foo
Una vez que tenga el conjunto de hijos, puede usar la función de tamaño:
$("#foo > div").size()
o puedes usar
$("#foo > div").length
Ambos le devolverán el mismo resultado
$("#foo > div").length
Dirija a los hijos del elemento con el id ''foo'' que son divs. A continuación, recupera el tamaño del conjunto envuelto producido.
$("#foo > div").length
jQuery tiene una función .size () que devolverá el número de veces que aparece un elemento pero, como se especifica en la documentación de jQuery, es más lento y devuelve el mismo valor que la propiedad .length, por lo que lo mejor es simplemente usar. propiedad de longitud. Desde aquí: http://www.electrictoolbox.com/get-total-number-matched-elements-jquery/
$("div", "#superpics").size();
$(''#foo > div'').size()
$(''#foo'').children(''div'').length
var divss = 0;
$(function(){
$("#foo div").each(function(){
divss++;
});
console.log(divss);
});
<div id="foo">
<div id="bar" class="1"></div>
<div id="baz" class="1"></div>
<div id="bam" class="1"></div>
</div>
var n_numTabs = $("#superpics div").size();
o
var n_numTabs = $("#superpics div").length;
Como ya se dijo, ambos devuelven el mismo resultado.
Pero la función size () es más jQuery "PC".
Tuve un problema similar con mi página.
Por ahora, simplemente omita el> y debería funcionar bien.