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()ます。これは、コードが下に貼り付けられているこのフィドルで示されています。

(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
            });
};

これは、私が作成した実用的なプラグインの一部です。お役に立てば幸いです。 dedefaultsvarを宣言した後に$.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 に答える