将选项发送到jQuery插件

时间:2014-06-06 10:57:46

标签: javascript jquery

我正在使用第三方jQuery插件,其中包含可以覆盖的选项。我有三个文件:插件源文件,我设置发送到插件的选项的Javascript文件,以及调用脚本的HTML文件。

其中一个选项来自AJAX调用,为了确保选项正确加载,我在调用返回后使用$ .getScript加载脚本。其余的选项都是静态的,因此它们可以保留在我的脚本文件中。

以下是我在脚本加载后从HTML文件中调用插件的方法:

 $.("#plugin_selector").pluginName({newOption: ajaxValue});

以下是我可以通过发送一个选项数组(假设我在AJAX调用之前加载脚本)从Javascript文件成功调用插件的方法:

var options = [{
    option1: value,
    option2: value2,
    option3: value3
});

$.("#plugin_selector").pluginName(options);

问题是当我在AJAX调用之后加载脚本并发送新选项时,我通过我的变量设置的所有其他选项都被覆盖。理想情况下,我希望将这两个数组合并。

如何在调用插件时将我的HTML文件发送的动态选项和脚本文件中的选项数组合并?我的Javascript文件中的options数组调用该文件中的一些其他函数,所以我认为将它保存在该Javascript文件中会更好。

我试图遵循这种模式:http://jquery-howto.blogspot.com/2009/01/how-to-set-default-settings-in-your.html,但它不起作用,我认为因为第三方插件在调用插件时会执行$ .extend过程来覆盖默认值。

1 个答案:

答案 0 :(得分:0)

如果不知道你正在处理的特定插件,很难确定,但我认为你几乎就在那里,$ .extend就是你想要做的。

所有$.extend都将两个对象合并在一起,你想要做的是将你的初始静态选项集与你的ajax合并。

我假设这一行

$.("#plugin_selector").pluginName({newOption: ajaxValue});

是从ajax成功处理程序调用的吗?如果是这样,请尝试将其更改为此。

//This is somewhere on your page (in scope of your ajax callback)
var options = {
    option1: value,
    option2: value2,
    option3: value3
    };


//This is inside your ajax callback
$.("#plugin_selector").pluginName($.extend(options, {newOption: ajaxValue});