在闭包范围中保存变量



我有以下内容:

var Save = $('th:first')[0];
$('th').click(function() {
    if (Save !== this) {
        Save = this;
        ...
    }
});

如何将"保存"放入闭包范围?

使用jQuery,我倾向于将整个批次包装在一个函数中,该函数以$的形式传入jQuery对象,以避免该简写中的命名空间冲突,正如jQuery文档所建议的那样。

(function($) {
    // ....
})(jQuery);

该范围内的任何变量,例如var Save,都在全局名称范围之外的闭包中。

我真的不明白你为什么要做你想做的事情(甚至不明白你到底想做什么…),但我认为这个问题有两个解决方案:

var Save = $('th:first')[0];
$('th').each(function() {
   var last = Save;
   $(this).click(function() {
      if (last !== this) {
         last = this;
          ...
      }
   });
});

var Save = $('th:first')[0];
$('th').data('Save', Save).click(function() {
    if ($(this).data('Save') !== this) {
        $(this).data('Save', this);
        ...
    }
});

**编辑**

如果你想要的只是"屏蔽"变量Save,那么

(function() {
var Save = $('th:first')[0];
$('th').click(function() {
    if (Save !== this) {
        Save = this;
        ...
    }
});
})();

最新更新