通过jQuery找到body标签的最快方法

ada*_*dam 30 html javascript jquery

在准备好每个文档时,我需要通过jQuery获取body标签,我对此的答案比其他任何事情都更好奇.

假设这是我网站上每个页面上的正文标记:

<body id="body">
Run Code Online (Sandbox Code Playgroud)

仅通过标记名称查询body标签更快:

$('body')
Run Code Online (Sandbox Code Playgroud)

或按其ID查询:

$('#body')
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 53

最快的方式是$(document.body).
这不涉及任何选择器解析.

$('body')比Firefox快得多(在Firefox和Chrome中)$('#body').

测试


Jam*_*ice 7

jQuery优化了body元素的发现.这是相关的jQuery源代码:

if ( selector === "body" && !context && document.body ) {
    this.context = document;
    this[0] = document.body;
    this.selector = selector;
    this.length = 1;
    return this;
}
Run Code Online (Sandbox Code Playgroud)

因此,使用$("body")$(document.body)与其他答案中建议的一样快.使用$("body")肯定会比给出body一个更快id,因为如果id使用a,上面的优化代码就无法运行.jQuery会使用getElementById,这很快,但不如上面那么快!

编辑

正如@SLaks所指出的那样,$(document.body)它是最快的,当您查看将处理DOM元素选择器而不是字符串的jQuery源时这是有意义的:

if ( selector.nodeType ) {
    this.context = this[0] = selector;
    this.length = 1;
    return this;
}
Run Code Online (Sandbox Code Playgroud)