【问题标题】:Passing object to JQuery function as options将对象作为选项传递给 JQuery 函数
【发布时间】:2014-05-06 08:36:58
【问题描述】:

这里没有发布整个功能,但基本前提是我正在尝试创建一个带有选项的插件。我不想重写函数的整个结构,我已经在谷歌上搜索了两个小时,没有任何运气。

这就是现在的样子:

function slider($rotator_container, settings) {

    var settings = {
        auto_rotate : false,
        auto_rotate_speed : 1000,
        transition_support : true //Disable this to use JQuery animations only
    }
};

我用以下方式调用变量:

slider("main-slider", {auto_rotate:true, auto_rotate_speed:5000});

如果我在我的函数之外使用对象的减速和默认值,这会起作用,但问题是我在一个页面上多次调用它,所以它不需要是全局的。我该怎么做?我需要重写整个函数吗?

【问题讨论】:

标签: jquery function object


【解决方案1】:

为了获得默认选项,您应该使用 $.extend 扩展选项

(function($){
    jQuery.fn.extend({

        // Plugin Name
        slider: function(options) {

            // Defaults options are set here
            // Every default goes within the { } brackets as seen below
            // A comma separates the different values
            var defaults = {  
                auto_rotate : false,
                            auto_rotate_speed : 1000,
                             transition_support : true

            };  
            var options = $.extend(defaults, options); 

return this.each(function() {   


});
}

    });
})(jQuery);  

那么你可以调用 as

$("div").slider(auto_rotate : true});

在您的情况下,您可以按如下方式扩展对象

function slider($rotator_container, settings) {

    var defaultsettings = {
        auto_rotate : false,
        auto_rotate_speed : 1000,
        transition_support : true //Disable this to use JQuery animations only
    };
  $.extend( defaultsettings, settings );
)

【讨论】:

  • 谢谢,我看到了这个,我试过了,如果不重新构建整个函数,我就无法让它工作。那么有没有办法像我在我的问题中那样扩展默认选项?
  • 如果你写的是单个函数而不是插件,那么你需要 $.extend(object1, object2);
  • 谢谢,我试试看。抱歉,我是设计师而不是开发人员 :)
猜你喜欢
  • 2013-01-21
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
  • 2013-02-05
  • 2021-09-24
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多