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 );
};

解决方法

当前接受的答案与 tests across many browsers比较不一致:first和:eq(0)到.first()和.eq(0).

对于当前主要的桌面浏览器:
$(‘foo’).first()比$(‘foo:first’)快四倍,

如果你想检查方法,here are the tests and their current results.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...