覆盖我的插件中的默认参数?

时间:2012-12-03 01:05:44

标签: jquery jquery-plugins plugins

我一直在尝试将我的carosel功能转换为插件我的问题是我希望能够覆盖默认参数,以便我可以从另一个javascript文件更改变量。

(function($){
$.rjm_carosel = (function(rjm){

    var sums = $(window).width() / 2;
    var animating = false;
    var step = 0;
    var nextStep = 0;
    var prevStep = 0;
    var defaults = {
                    mainContainer: ".container",
                    delay: 15000,
                    slideDuration: 1000,
                    slideEasing: "easeOutQuart",
                    };      


    rjm.reclass_thumb_blocks = function(){

    };

    rjm.slideNext = function(){

    };

    rjm.slideBack = function(){

    };

    rjm.bindBtn = function(){

    };

    rjm.unbindBtn = function(){

    };
    return rjm;

})({});

})(jQuery);

这是我在另一个工作的js文件中触发函数的方法:

        $.rjm_carosel.unbindBtn();
        $.rjm_carosel.bindBtn();
        $.rjm_carosel.reclass_thumb_blocks();

如何覆盖say mainContainer默认变量为'.newWrapper'而不是'.container'?

我希望能够覆盖插件js文件之外的默认值,否则对我没用。

1 个答案:

答案 0 :(得分:0)

Addy Osmani有一个很好的模板,演示了如何设置默认值,然后能够覆盖它们。应该是你需要的。 Here is a link to it on Github.

这里的广告是tl; dr:实际上你设置了一个var来扩展默认值:

    options = $.extend( {}, $.fn.pluginName.options, options );

    return this.each(function () {

        var elem = $(this);

    });
};

然后你可以实际设置默认值,以防万一没有传入:

$.fn.pluginName.options = {

    key: "value",
    myMethod: function ( elem, param ) {

    }
};

要覆盖你会使用:

$.fn.pluginName.key ='otherval';