在jQuery插件中设置默认参数

时间:2014-06-22 17:54:51

标签: jquery jquery-plugins

我正在寻找一种方法来将默认数值设置为我的插件的默认参数,或者可以选择通过ajax调用来检索默认值。换句话说:

  var defaults = {
        param1: 1000,
        totalTime : null // the default value i'm looking for in seconds
    }

那样:

$('.test').myPlugin({
    param1: 1000,
    totalTime: function () {
        $.ajax({
            url: 'totaltime.php',
            type: 'POST',
            success: function(data) {
                // retrieve value here
            }
        });         

    }
});

OR 

$('.test').myPlugin({
    param1: 1000,
    totalTime: 200 // numerical
});

我最近才开始玩插件,发现这是一个有趣的概念,但我遇到了一些麻烦。这是我的插件现在的样子(新插件的基本设置)。

(function($) {
    $.fn.myPlugin = function(options) {

        var plugin = this;

        var defaults = {
            param1: 1000,
            totalTime : null
        }

        plugin.init = function() {
            plugin.settings = $.extend({}, defaults, options);
            plugin.timer();
        }   

        plugin.settings = {}

        plugin.timer = function() {

        }

        plugin.init();
        return this;

    };

})(jQuery);

2 个答案:

答案 0 :(得分:1)

只需定义您的默认值:

var defaults =$.extend( {
        param1: 1000,
        totalTime : null
    },options);

然后您可以像defaults.param1defaults.totalTime

一样使用它

更新:

以上示例是如何将totalTime值数值设置为默认值。

如果您想在插件中更改它,那么您可以这样做:

defaults.totalTime=500;

defaults.totalTime=givenVal; //givenVal is a variable that contains the value

同样在你的jQuery代码中,你可以将totalTime设置为:

$('#test').myPlugin({
    totalTime:500
});

$('#test').myPlugin({
    totalTime:givenVal
});

所以你现在应该做的就是从ajax中获取值,将它放在一个变量中,并将其传递给你的插件,如上所述!

答案 1 :(得分:0)

@AminJafari已指出如何正确定义默认值。下面是如何使用ajax请求中的值调用插件。 注意:totalTime callback必须返回一个值,并且该值必须可以返回。 - 这意味着它必须在success回调中完成ajax请求:

    $.ajax({
        url: 'totaltime.php',
        type: 'POST',
        success: function(data) {
            $('.test').myPlugin({
                param1: 1000,
                totalTime: function () {
                    // retrieve value here
                    return data.timeValue; //for example
                }
            });
        }
    });