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

时间:2011-10-09 20:42:25

标签: javascript jquery html

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

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

<body id="body">

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

$('body')

或按其ID:

查询
$('#body')

3 个答案:

答案 0 :(得分:53)

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

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

Test

答案 1 :(得分:7)

jQuery优化了body元素的发现。这是相关的jQuery source

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 id更快,因为如果使用id,则无法运行上述优化代码。 jQuery将使用getElementById,这很快,但不如上面那么快!

修改

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

if ( selector.nodeType ) {
    this.context = this[0] = selector;
    this.length = 1;
    return this;
}

答案 2 :(得分:2)

标记名称在Chrome中速度最快,可能是大多数浏览器。更快的是跳过jQuery包装器:

document.getElementsByTagName("body");

或者

document.body