通过回调动态更改jQuery插件的选项

时间:2018-08-30 16:20:56

标签: javascript jquery

有一个使用默认设置实例化的插件,可以覆盖它们,例如:

$('#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);
}

是否可以通过该回调更改option1option2?我知道我可以在插件内创建一个函数来专门更改设置,但我想不更改地使用插件。

2 个答案:

答案 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编写的,我认为它会自动获取。

但是我看过很多简单的插件,它们没有提供任何动态修改设置的方法。相反,您可能必须创建一个新元素,并使用新选项初始化插件。