Recomiendo usar $('#foo').children().size()
para un mejor rendimiento.
Creé una prueba jsperf para ver la diferencia de velocidad y el children()
método superó el enfoque del selector secundario (#foo> div) en 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).
[Actualización] He actualizado la prueba para incluir el tamaño () frente a la prueba de longitud, y no hacen mucha diferencia (resultado: el length
uso es ligeramente más rápido (2%) que size()
)
[Actualización] Debido al marcado incorrecto visto en el OP (antes de la actualización 'marcado validado' por mí), ambos $("#foo > div").length
y $('#foo').children().length
resultaron iguales ( jsfiddle ). Pero para obtener una respuesta correcta para obtener SOLO hijos 'div', uno DEBE usar el selector de niños para un rendimiento correcto y mejor