Подтвердить что ты не робот

Самый быстрый способ найти тег тела через jQuery

На каждом готовом документе мне нужно получить тег body через jQuery, и мне более любопытно ответить на этот вопрос, чем что-либо еще.

Скажем, это тег тела на каждой странице моего сайта:

<body id="body">

Быстрее запросить тег body только именем тега:

$('body')

или запросите его по своему id:

$('#body')
4b9b3361

Ответ 1

Самый быстрый способ - $(document.body).
Это не связано с синтаксическим разбором селектора.

$('body') намного быстрее (в Firefox и Chrome), чем $('#body').

Тест

Ответ 2

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;
}

Ответ 3

Название тега является самым быстрым в Chrome и, вероятно, большинством браузеров. Быстрее было бы пропустить оболочку jQuery:

document.getElementsByTagName("body");

или

document.body