我有以下内容:
var Save = $('th:first')[0];
$('th').click(function() {
if (Save !== this) {
Save = this;
...
}
});
如何将“保存”放入封闭范围?
答案 0 :(得分:4)
使用jQuery,我倾向于将整个部分包装在一个函数中,该函数将jQuery
对象作为$
传递,以避免在该速记上发生命名空间冲突,如recommended by the jQuery documentation。 / p>
(function($) {
// ....
})(jQuery);
该范围内的任何变量,例如您的var Save
,都会在闭包中超出全局名称范围。
答案 1 :(得分:4)
我真的不明白为什么你想要做你想做的事情(甚至你想要做什么......),但这里有两个解决方案,我认为这个问题是关于:
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;
...
}
});
})();