Я новичок в jQuery и, просматривая несколько примеров кода, обнаружил:
$(document.body)
и $('body')
Есть ли разница между этими двумя?
jquery
document
document-body
Ashleedawg
источник
источник
$(body)
не работает для.on('click'...
событий, тогда как$(document.body)
и$(document)
оба работают.Ответы:
Они относятся к одному и тому же элементу, разница в том, что когда вы говорите,
document.body
что передаете элемент непосредственно в jQuery. В качестве альтернативы, когда вы передаете строку'body'
, механизм выбора jQuery должен интерпретировать строку, чтобы выяснить, к какому элементу (элементам) она относится.На практике любой из них выполнит свою работу.
Если вам интересно, в документации по функции jQuery есть дополнительная информация .
источник
Ответы здесь на самом деле не совсем правильные. Близко, но есть крайний случай.
Разница в том, что $ ('body') фактически выбирает элемент по имени тега, тогда как document.body ссылается на прямой объект в документе.
Это означает, что если вы (или мошеннический скрипт) перезаписываете элемент document.body (позор!), $ ('Body') все равно будет работать, а $ (document.body) - нет. Так что по определению они не эквивалентны.
Рискну предположить, что существуют и другие граничные случаи (например, элементы с глобальным идентификатором в IE), которые также будут вызывать то, что составляет перезаписанный элемент тела в объекте документа, и применима та же ситуация.
источник
document.body
на что-либо иное, кроме a<body>
: i.imgur.com/unJVwXy.pngПри тестировании в моем браузере я обнаружил довольно большую разницу во времени.
Я использовал следующий сценарий:
Я сделал 10 миллионов взаимодействий, и вот результаты (Chrome 65):
Передача элемента напрямую примерно в 4 раза быстрее, чем передача селектора.
источник
$(document.body)
использует глобальную ссылкуdocument
для получения ссылки наbody
, тогда как$('body')
является селектором, в котором jQuery получит ссылку на<body>
элемент вdocument
.Я не вижу серьезной разницы, никакого заметного прироста производительности от одного к другому.
источник
$(document.body)
значительно быстрее, согласно этой статье: sitepoint.com/jquery-body-on-document-onНе должно быть вообще никакой разницы, возможно, первый вариант немного более производительный, но я думаю, что это тривиально (на самом деле, вам не стоит об этом беспокоиться).
В обоих случаях вы оборачиваете
<body>
тег в объект jQueryисточник
На выходе оба эквивалентны. Хотя второе выражение проходит поиск сверху вниз из корня DOM. Возможно, вы захотите избежать дополнительных накладных расходов (какими бы незначительными они ни были), если у вас уже есть объект document.body в руке для JQuery для переноса. См. Http://api.jquery.com/jQuery/ #Selector Context
источник