在准备好每个文档时,我需要通过jQuery获取body标签,我对此的答案比其他任何事情都更好奇。
假设这是我网站上每个页面的正文标记:
<body id="body">
仅通过标签名称查询body标签是否更快:
$('body')
或按其ID:
查询$('#body')
答案 0 :(得分:53)
答案 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