我正在尝试创建一个超级简单的插件。这是我的代码:
var methods = {
init: function (userOptions) {
console.log('init');
setInterval(this.update, 1000);
},
update: function(){
console.log(this);
}
};
$.fn.myPlugin = function (methodOrOptions) {
if (methods[methodOrOptions]) {
return methods[methodOrOptions].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + methodOrOptions + ' does not exist on jQuery.myPlugin');
}
};
这里初始化被称为罚款,但不会每1秒调用一次更新。我在这里缺少什么?
答案 0 :(得分:3)
这绑定到jquery对象。它没有this.update。可以这样做:
setInterval(methods.update.bind(this), 1000);
只需获取全局方法对象的更新功能,并将jquery对象绑定到它。