jQuery - $ this而不是$(this)?

时间:2011-07-16 19:52:45

标签: jquery

我认为我读到了一些内容,表示对于这样的代码更好:

var id1 = $(this).attr('id') 
var id2 = $(this).parent().parent().parent().parent().parent().attr('id') 
var text = $(this).text()        

..给一个变量如$this = $(this),然后使用它而不是每个$(this)。我不知道我在哪里读到这个,所以我的问题是它是真的吗?

5 个答案:

答案 0 :(得分:2)

每次使用时,这样可以节省一些时间在jQuery数组集合中包装this对象。如此简短的回答:是的,但差异不应该很大。

答案 1 :(得分:2)

如果我的问题是对的,是的。这是一个例子:

var t = $(this);
var id1 = t.attr('id'); 
var id2 = t.parent().parent().parent().parent().parent().attr('id') ;
var text = t.text();

答案 2 :(得分:1)

是的,你可以

var $this = $(this);
var id1 = $this.attr('id'); 
var id2 = $this.parent().parent().parent().parent().parent().attr('id') ;
var text = $this.text();

答案 3 :(得分:1)

如果您的问题是将选择器分配给local var,那么您就是对的。这与Javascript的范围性质有关。

如果我在使用本地var时记得正确,那么变量查找会更快。特别是如果您多次使用选择器。

我不知道你在哪里阅读它,但我在Google Developer Stuff上观看了一段关于此事的视频。

我不记得原始视频,但请查看video。这是一个很好的手表。

同时检查this幻灯片

答案 4 :(得分:1)

让我再补充一点

以下称为缓存,用于提高DOM操作的性能, 以下代码将缓存对象,并且每次对$ this执行任何操作时都不会查询DOM。

var $this = $(this);
var id1 = $this.attr('id'); 

每次必须对DOM进行查询时,$(this)可能会花费更少的费用

var id1 = $(this).attr('id');