假设我有
在第二种情况下,jQuery对集合进行了切片,但我不确定它的效率如何。
$('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;
...
}
}
在第二种情况下,jQuery对集合进行了切片,但我不确定它的效率如何。
function first() {
return this.eq( 0 );
};
function eq( i ) {
return i === -1 ?
this.slice( i ) :
this.slice( i, +i + 1 );
};