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