缓存这个,jQuery

时间:2013-12-24 18:27:21

标签: javascript jquery

我经常看到像这样的代码:

$('.element').on('click', function(event) {
  var element = this;

  // somecode that uses "element"
});

有没有理由缓存this

4 个答案:

答案 0 :(得分:2)

如果代码包含需要访问this的闭包,则必须这样做。 this不是局部变量,因此不会在闭包中捕获,您需要为此目的绑定局部变量。

如果代码包含使用类似$.each()的函数的循环,并且循环体需要引用元素,则还需要它。这些函数将正文中的this重新绑定到当前迭代对象。

答案 1 :(得分:2)

如果需要在另一个代码范围内引用它,很多人都会设置对this的引用。例如:

$('.element').on('click', function(event) {
  var element = this;

  // somecode that users "element"
  function foo() {
      //$(this).text() WONT Work!
      alert($(element).text()); //references the element that was clicked
  }
});

答案 2 :(得分:1)

进入函数或循环后,this可能会引用该函数中的对象。因此明确指定元素允许您始终访问它,与范围无关。

答案 3 :(得分:0)

this不是jQuery元素,将其包装在$(this)

缓存很好,因为它存储元素,并且它不会占用内存或处理时间来尝试重新找到元素。但是,this会更改范围,因此您可能不希望缓存该范围。