我理解$("#id")
更快,因为它映射到本机javascript方法。 $("body")
是否也是如此?
答案 0 :(得分:10)
不,它没有使用Sizzle,$("body")
有一个特殊的快捷方式,you can see the code here:
// The body element only exists once, optimize finding it
if ( selector === "body" && !context && document.body ) {
this.context = document;
this[0] = document.body;
this.selector = "body";
this.length = 1;
return this;
}
请注意,完全与$(document.body)
相同,因为$("body")
生成的上下文为document
,其中$(document.body)
为{{1}} (像任何其他DOM节点一样)具有自身的上下文。
答案 1 :(得分:6)
直接来自source (code):
if ( selector === "body" && !context && document.body ) {
this.context = document;
this[0] = document.body;
this.selector = "body";
this.length = 1;
return this;
}
适用于身体以外的标签
如果你深入挖掘,如果没有给出上下文,他们会使用getElementsByTagName
。与使用Sizzle引擎相比,这将提升性能。
// HANDLE: $("TAG")
} else if ( !context && !rnonword.test( selector ) ) {
this.selector = selector;
this.context = document;
selector = document.getElementsByTagName( selector );
return jQuery.merge( this, selector );
// HANDLE: $(expr, $(...))
}