0

私のプラグインは、オブジェクトごとに異なることを行う必要があり、同時に、さまざまなメソッドを呼び出して、他の多くのことを行う必要があります。

ここでやりたいことは、ユーザーがボタンをクリックしたときに、 ではなく divfirstの関数を呼び出す必要があるということです。test_onetest_two

jsFiddle の私のコード:

<button class="test_one">First</button >

<button class="test_two">Second</button >

<div class="called_for"></div>
(function($){
    var globalSettings = {
        success: function(){}
    };

    var methods = {
        init : function(options){
            settings            = $.extend({},globalSettings,options);

            $(this).click(function(){
                settings.success();                
            });                
        }                
    }

    $.fn.test = function(method, options){
        if(methods[method])
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        else if(typeof method === 'object' || !method)
            return methods.init.apply(this, arguments);
        else
            $.error('Method ' + method + ' does not exist');
    };

})(jQuery);


$(".test_one").test({
    success: function(){
        $(".called_for").text("I got called for 'test_one'");
    }
});


$(".test_two").test({
    success: function(){
         $(".called_for").text("I got called for 'test_two'");
    }
});

</p>

4

2 に答える 2

3

宣言しなかったsettingsため、グローバルであり、2番目のプラグイン呼び出しによって上書きされました。使用してください:http var//jsfiddle.net/q6e38/4/

var settings = $.extend({}, globalSettings, options);
于 2012-11-23T20:35:13.607 に答える
0

このスケルトンを使用すると、うまく動作します: https://github.com/OscarGodson/jQuery-Plugin-Skeleton

于 2012-11-23T20:43:09.613 に答える