Ответ 1
Самый быстрый способ - $(document.body)
.
Это не связано с синтаксическим разбором селектора.
$('body')
намного быстрее (в Firefox и Chrome), чем $('#body')
.
На каждом готовом документе мне нужно получить тег body через jQuery, и мне более любопытно ответить на этот вопрос, чем что-либо еще.
Скажем, это тег тела на каждой странице моего сайта:
<body id="body">
Быстрее запросить тег body только именем тега:
$('body')
или запросите его по своему id:
$('#body')
Самый быстрый способ - $(document.body)
.
Это не связано с синтаксическим разбором селектора.
$('body')
намного быстрее (в Firefox и Chrome), чем $('#body')
.
jQuery оптимизирует поиск элемента body
. Вот соответствующий источник jQuery:
if ( selector === "body" && !context && document.body ) {
this.context = document;
this[0] = document.body;
this.selector = selector;
this.length = 1;
return this;
}
Таким образом, использование $("body")
будет в значительной степени быстрее, чем $(document.body)
, как это предлагается в других ответах. Использование $("body")
, безусловно, будет быстрее, чем предоставление body
a id
, потому что, если используется id
, приведенный выше оптимизированный код не может работать. jQuery будет использовать getElementById
, который быстр, но не так быстро, как выше!
Edit
Как указано @SLaks, $(document.body)
является самым быстрым, что имеет смысл, когда вы смотрите на источник jQuery, который будет обрабатывать селектор элементов DOM, а не строку:
if ( selector.nodeType ) {
this.context = this[0] = selector;
this.length = 1;
return this;
}
Название тега является самым быстрым в Chrome и, вероятно, большинством браузеров. Быстрее было бы пропустить оболочку jQuery:
document.getElementsByTagName("body");
или
document.body