2

查看 jquery 中 .each() 函数的文档会显示以下方法签名:

.each( function(index, Element) )

http://api.jquery.com/each/

我可以理解需要传入一个索引以便它可以在回调中使用,但是如果您可以通过this关键字引用当前元素,为什么还要显式包含 Element 参数?它只是为了让您可以指定您选择的实例名称吗?我的意思是,如果您仍然必须在 jquery 方法中包装一个命名实例$()来取回一个 jquery 对象,那不完全一样this吗?文档似乎没有提到它为什么在那里。

更新:

我认为这与闭包有关,但我不确定。看起来我所说的“命名实例”实际上是数组中元素的本地副本或克隆,存储在回调范围内的变量中。我怀疑通过使用this它来引用一个变量,就好像它是某种闭包一样。@thecodeparadox 在一个萤火虫控制台中发现了一些让我思考这个问题的东西。仍然不太确定有什么区别,或者为什么您需要在数组中拥有一个本地范围的元素值。

4

2 回答 2

1

Element指发生循环的 Object 的每个元素。在回调函数中,您还可以使用也获取每个值this

例如:

$(['a','b', 'c']).each(function(i, el) {
  console.log(el);
  console.log(this); 
});

我发现的一件事

对于上面的例子,如果你看到console.log(el)你会得到结果:

a, b, c..

但如果你看到console.log(this)你会看到 String 对象。

console.log(el)要获得与您需要编写的输出相同的输出console.log( this[0] )

这意味着直接获取原始值el即回调参数可靠且容易。

打开萤火虫并查看输出

于 2012-09-13T22:06:21.827 回答
1

"this" 的上下文可以在 .each 块内经常更改,因此它们提供对元素的引用,从而使您不必执行诸如 "var that = this;" 之类的操作。

于 2012-09-13T22:07:23.870 回答