Я добавил тест jsperf, чтобы увидеть разницу в скорости для разных подходов, чтобы получить первого ребенка (всего более 1000 детей)
дано, notif = $('#foo')
JQuery способы:
$(":first-child", notif)
- 4304 операций в секунду - самый быстрый
notif.children(":first")
- 653 операции в секунду - на 85% медленнее
notif.children()[0]
- 1416 операций в секунду - на 67% медленнее
Родные способы:
- JavaScript native '
ele.firstChild
- 4934323 операций в секунду (все вышеперечисленные подходы на 100% медленнее по сравнению с firstChild
)
- Собственный DOM ele от jQery:
notif[0].firstChild
- 4,913,658 операций в секунду
Итак, первые 3 подхода jQuery не рекомендуются, по крайней мере, для первого ребенка (я сомневаюсь, что это будет иметь место и со многими другими). Если у вас есть объект jQuery и вам нужно получить first-child, то получите нативный элемент DOM из объекта jQuery, используя ссылку на массив [0]
(рекомендуется) или .get(0)
и используйте ele.firstChild
. Это дает те же результаты, что и при обычном использовании JavaScript.
все тесты выполнены в Chrome Canary build v15.0.854.0