我试图写一个新的插件,可以对多个元素在同一页面内被初始化,使用不同的选项,每次,EX插件:jQuery的多个实例使用“this”中的setTimeout
$('#id').plugin({ option:true });
$('#id2').plugin({ option:false });
我使用jqueryboilerplate.com的样板(https://github.com/jquery-boilerplate/jquery-boilerplate)。我理解(至少我认为我是这么做的),问题是在匿名函数的范围内(这里,在setTimeout内),'this'指向窗口。所以在下面,输出记录的第一次,但不是第二:
// Avoid Plugin.prototype conflicts
$.extend(Plugin.prototype, {
init: function() {
console.log(this.settings.propertyName);
setTimeout(function(){
console.log(this.settings.propertyName);
}, 1000);
}
});
别处this.settings.propertyName设置为“价值”。 CONSOLE.LOG结果是:
value
Uncaught TypeError: Cannot read property 'propertyName' of undefined
举例来说,如果我设置window.prop = this.settings.propertyName和执行console.log window.prop代替,这样的作品,但问题是,有可能运行许多实例与此同时。
我已阅读了很多与此主题相关的问题,但似乎没有一个能够真正解决这种特殊情况。如果有人能够给我一个清楚的例子,说明如何在使用样板的jQuery插件或类似的东西的背景下做到这一点,我将不胜感激。请原谅我的noobness,谢谢!