jquery插件错误

时间:2012-06-10 02:16:58

标签: javascript jquery jquery-plugins plugins

我正在尝试制作一个插件(来自我拥有的其他代码),但我无法让选项部分工作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:

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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 默认值var

后调用 $ .extend

答案 2 :(得分: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);

DEMO:http://jsfiddle.net/nfDTh/