Mak*_*Vi. 9 performance jquery jquery-selectors
让我们说我有$('mySelector:first');
和$('mySelector').first();
.哪种方式效率最高?我查看了源代码,但仍然无法弄明白.
看起来在第一种情况下,jQuery会遍历每个项目,直到获得第一个项目:
CHILD: function( elem, match ) {
var type = match[1],
node = elem;
switch ( type ) {
...
case "first":
while ( (node = node.previousSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
if ( type === "first" ) {
return true;
}
node = elem;
...
}
}
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,jQuery会对集合进行切片,但我不确定它的效率如何:
function first() {
return this.eq( 0 );
};
function eq( i ) {
return i === -1 ?
this.slice( i ) :
this.slice( i, +i + 1 );
};
Run Code Online (Sandbox Code Playgroud)
Phr*_*ogz 13
目前接受的答案并不一致跨多个浏览器测试,比较:first
和:eq(0)
以.first()
和.eq(0)
.
对于当前主流的桌面浏览器:
$('foo').first()
几乎快四倍$('foo:first')
如果您想检查方法,这里是测试及其当前结果.
归档时间: |
|
查看次数: |
1600 次 |
最近记录: |