哪个更快:$(“。elt”,$ this)或$ this.find(“。elt”);?

时间:2012-01-27 20:49:16

标签: jquery performance

var $this = $(this);

鉴于上述情况,速度更快:$(".elt", $this)$this.find(".elt")

我问,因为第一个似乎更简洁,但如果它转换为$($this).find(".elt") [sic],它似乎实际上可能更慢。

2 个答案:

答案 0 :(得分:5)

使用$("#elt")要快得多,因为只有一个id="elt"元素是有效元素。 (ID必须是独一无二的)

编辑:如果你只是用它作为例子,并且同样的问题适用于使用类而不是ID,由于jquery在内部的工作方式,两种方式应该相对相同。

$(".elt", $this)转换为与$this.find(".elt")相同的$this.find(".elt")

在一次运行数千次迭代后,您可能会发现两者之间的差异,但在正常情况下,最好使用更容易阅读的那种。

答案 1 :(得分:3)

这两者之间的性能差异可以忽略不计。

$( 'selector', context )在jQuery $( context ).find( 'selector' )函数的最开头转换为$()。我们在这里谈论微秒(如果不是纳秒)。

(我更喜欢较短的形式,因为它......嗯,更短。)