【问题标题】:Sending options to a jQuery plugin向 jQuery 插件发送选项
【发布时间】:2014-06-06 10:57:45
【问题描述】:

我正在使用第三方 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 过程。

【问题讨论】:

  • 我似乎无法完全理解这个问题。您是实例化整个对象,还是只是为预实例化对象设置选项?您能否提供更多代码来制作 $.("#plugin_selector").pluginName({newOption: ajaxValue});调用和ajax函数?

标签: javascript jquery


【解决方案1】:

如果不知道您正在处理的具体插件,很难确定,但我认为您快到了,$.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});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多