得到这个最合适的方法:$($(“。answer”))

假设我想获得类“.answer”中所有元素中的第一个元素,

$($(".answer")[0]) 

我可以做到以上,但优雅和速度之间的最佳平衡是什么?

*改变了这个问题,以反映当前的讨论

下面的function都是相同的(虽然不是速度):

哪个最好?
据推测 ,select器版本应该比方法版本更快(而逻辑是有道理的),但是我还没有find一个可靠的跨浏览器,多文档的基准testing,certificate这是真实的。

在某些情况下,你不能使用select器,因为你有一个从链接结果产生的jQuery对象,必须稍后删除。

编辑 :根据以下@ yctesting的优秀信息,以下是当前(2011年 – 2月 – 4日)testing结果总结和比较与.answer:first的基线.answer:first

           :first:eq(0).first().eq(0)$($('...')[0])
 Chrome 8 + 100%92%224%266%367%
    FF 3.6 100%100%277%270%309%
   FF 4.0b 100%103%537%521%643%
 safari5 100%93%349%352%467%
 歌剧11 100%103%373%374%465%
      IE 8 100%101%1130%1246%1767%
  iPhone 4 100%95%269%316%403%
 ================================================== ===
 加权100%92%286%295%405%
    主要100%95%258%280%366%
  • 加权线显示按每个浏览器的testing次数加权的性能; stream行的浏览器(在这些testing中)被更强烈地计算在内。
  • 主要行显示相同,只包括主要桌面浏览器的非beta版本。

总之:这个假设是(目前)是错误的。 这个方法比Sizzleselect器快得多,几乎没有例外,OP的代码$($('.answer')[0])是其中最快的!

这可能是StackOverflow自杀与25对upvotes公认的答案,但我打算这样做,因为准确性很重要。 我不能讲优雅的一面,但这里的performance方面实际上可以造成巨大的差异。

从一组JavaScripttesting中看 ,您的原始方法实际上是有效的方法,与假设接受的答案相关的非CSS Sizzleselect器往往比方法select器相比效率低得多。 这是有原因的。 $('.answer')可以使用浏览器原生的getElementsByClass()而不必手动遍历结果。 第:firstselect器使这个复杂化。 在这种情况下,使用嘶嘶声select器似乎减慢了4-5倍的select。

我认为,使用jQuery,性能应该胜过优雅,所有的证据(我已经testing过的每一个浏览器!)似乎表明,OP的不雅的解决scheme是最快的一个相当数量。

以下是testing运行最多的浏览器的结果:

在这里输入图像说明

(这些数字是“每秒操作”,所以数字越大越快,数字越小越慢。)

使用:firstselect器或.firstfilter方法:

 $(".answer:first"); 

要么:

 $(".answer").first();