有一个使用默认设置实例化的插件,可以覆盖它们,例如:
$('#test').Plugin({
option1: 'blahblah',
option2: 'test'
});
它还可以添加这样的回调:
funcCallback = function(t){
//Do something with t to change option1
};
$('#test').Plugin({
option1: 'blahblah',
option2: 'test',
callback: funcCallback
});
在插件中,我可以看到回调是这样的:
if (this.settings.callback) {
this.settings.callback.call(this);
}
是否可以通过该回调更改option1
和option2
?我知道我可以在插件内创建一个函数来专门更改设置,但我想不更改地使用插件。
答案 0 :(得分:1)
上下文将是插件本身,因为它是通过call
调用绑定的。
funcCallback = function(t){
this.settings.option1 = 'newblahblah';
};
答案 1 :(得分:0)
这取决于插件的设计。例如,jQuery UI插件通常允许您使用option
方法来动态更改选项,如下所示:
$("#test").dialog("option", {
autoOpen: true,
disabled: false
});
如果插件是使用jQuery Widget Factory编写的,我认为它会自动获取。
但是我看过很多简单的插件,它们没有提供任何动态修改设置的方法。相反,您可能必须创建一个新元素,并使用新选项初始化插件。