Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用闭包作用域保留最后一个值_Javascript_Jquery - Fatal编程技术网

Javascript 使用闭包作用域保留最后一个值

Javascript 使用闭包作用域保留最后一个值,javascript,jquery,Javascript,Jquery,我有以下资料: $('th').click(function() { var $th = $(this); ... }); 使用闭包范围,我想说: var $th; $('th').click(function() { if ($th !== $(this)) { $th = $(this); ... } }); 注意:这段代码正好在之前,所以我不需要$(function(){}) 您应该检查底层DOM元素是否相等: if ($th[0] !=

我有以下资料:

$('th').click(function() {
   var $th = $(this);
   ...
});
使用闭包范围,我想说:

var $th;
$('th').click(function() {
   if ($th !== $(this)) {
      $th = $(this);
      ...
   }
});

注意:这段代码正好在之前,所以我不需要$(function(){})

您应该检查底层DOM元素是否相等:

if ($th[0] !== this) {

(您也可以在不调用
$
的情况下存储
本身)

我想我必须将其定义为一个匿名函数,返回函数,以便在return语句之前定义$th。不起作用的原因是
$(this)!=$(this)
,jQuery构造函数生成一个新对象,因此不能这样检查它。否则第二句就可以了。也许我应该检查$th.index()!==$(this).index()参见SLaks答案,这是明智的方法。(
$th[0]
假设您存储
$th=$(此)
,可能您正在进一步使用
$th
)。