Я рекомендую использовать $('#foo').children().size()
для лучшей производительности.
Я создал тест jsperf , чтобы увидеть разницу в скорости, и метод children()
превзошел подход дочернего селектора (#foo> div) как минимум на 60% в Chrome (канарейка v15) 20-30% в Firefox (v4).
Кстати, само собой разумеется, что эти два подхода дают одинаковые результаты (в данном случае 1000).
[Обновить] Я обновил тест, включив в него тест size () и длины, и они не имеют большого значения (результат: length
использование немного быстрее (2%), чем size()
)
[Обновление] Из-за неправильной разметки, замеченной в OP (до того, как я обновил проверенную разметку), оба $("#foo > div").length
& $('#foo').children().length
дали одинаковые результаты ( jsfiddle ). Но для правильного ответа, чтобы получить ТОЛЬКО «div» детей, один ДОЛЖЕН использовать дочерний селектор для правильной и лучшей производительности