0

我正在尝试制作一个插件(来自我拥有的其他代码),但我无法让选项部分工作 D:

插件(到目前为止):

(function($){
    $.fn.scBox = function(options){
        var $opts = $.extend($.fn.scBox.defaults, options);

        $.fn.scBox.defaults = {
            start: 40,
            //i: fn.scBox.defaults.start,
            width: 200,
            height: 50,
            min: 0,
            step: 10,
            fontSize: 15,
            textColor: "#fff",
            bgColor: "#000",
            slideColor: "#ff0000"
        }

        console.log($.fn.scBox.defaults);
    }
})(jQuery);

当我尝试通过 调用它时$.scBox();,我收到此错误:Uncaught TypeError: Object function (a,b){return new e.fn.init(a,b,h)} has no method 'scBox'我只想让它记录我给它的选项 D:

4

3 回答 3

2

打电话$.fn.scBox(),不是$.scBox()。这在这个fiddle中得到了演示,其代码粘贴在下面。

(function($){
    $.fn.scBox = function(options){
        $.fn.scBox.defaults = {
            start: 40,
            //i: fn.scBox.defaults.start,
            width: 200,
            height: 50,
            min: 0,
            step: 10,
            fontSize: 15,
            textColor: "#fff",
            bgColor: "#000",
            slideColor: "#ff0000"
        }
        var $opts = $.extend($.fn.scBox.defaults, options);
        console.log($opts);
    }
    $.fn.scBox();
})(jQuery);
于 2012-06-10T02:25:10.120 回答
1
$.fn.paginator = function(options){

           var defaults = {
                items_per_page              :   10,
                num_page_links_to_display   :   4,
                start_page                  :   1,
                total_items                 :   20,
                label_first                 :    'First',
                label_prev                  :   'Prev',
                label_next                  :   'Next',
                label_last                  :   'Last',
                show_first_last             :   true,
                onChange                    :   function(){return false;}
            };
            var options = $.extend({}, $.fn.paginator.defaults, options);

            return this.each(function(){
              //Code in here
            });
};

这是我制作的一个工作插件的一部分。我希望它有帮助!请注意, 在声明 de defaults var之后调用$.extend

于 2012-06-10T02:25:19.300 回答
1

jQuery 插件在 jQuery 对象上调用。你不应该直接打电话给他们。您应该在 jQuery 对象上调用它。

$('#myElement').scBox();

另外,您在$.extend声明之前$.fn.scBox.defaults 先打电话。

    $.fn.scBox.defaults = {
        start: 40,
        //i: fn.scBox.defaults.start,
        width: 200,
        height: 50,
        min: 0,
        step: 10,
        fontSize: 15,
        textColor: "#fff",
        bgColor: "#000",
        slideColor: "#ff0000"
    }

    var $opts = $.extend($.fn.scBox.defaults, options);

注意:$.extend修改作为第一个参数传递的对象(它也返回它)。所以,你不需要var $opts =

$.extend($.fn.scBox.defaults, options);
console.log($.fn.scBox.defaults);

或者,您可以这样做:

var $opts = $.extend({}, $.fn.scBox.defaults, options);
console.log($opts);

演示:http: //jsfiddle.net/nfDTh/

于 2012-06-10T03:57:49.980 回答