【发布时间】:2011-12-06 21:18:38
【问题描述】:
我在 jQuery 插件中使用此代码:
setInterval(function() {
localStorage.setItem("flag", "set");
var data = $(this).serializeArray();
console.log($(this));
$.each(data, function(i, obj) {
localStorage.setItem(obj.name, obj.value);
});
console.log('saved');
console.log(localStorage);
}, 5000);
if (localStorage.getItem("flag") == "set") {
alert("This form has saved data!");
var data = $(this).serializeArray();
console.log($(this));
$.each(data, function(i, obj) {
$("[name='" + obj.name +"']").val(localStorage.getItem(obj.name));
});
}
现在奇怪的是,第一个 $(this) 包含表单(运行插件),但第二个 $(this) 包含 DOMWindow。为什么这两个$(this) 包含不同的东西?是因为第一个在setInterval 内吗?
【问题讨论】:
-
是的,还要注意
this在很多情况下会被 JQuery 覆盖。
标签: jquery this setinterval