我正在使用第三方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过程来覆盖默认值。
答案 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});