0

初めての jQuery プラグインを作成していて、jQuery オブジェクトを作成したいのですが、作成したばかりのオブジェクトを制御できるようにしたいのです...

ここで推奨される形式に従ってプラグインを構築しています: http://docs.jquery.com/Plugins/Authoring

ここに私のテストコードがあります:

(function($){

    var $this = $(this);

    var methods = {
        init : function( options ) {

        //  methods.createDiv();

            $this = $('<div>TEST CONTENT</div>')
                .attr({ 'id':'test' })
                .css({'color':'white','backgroundColor': 'red'})
                .appendTo("body");

            setTimeout(function(){
                    methods.green();
                },
                3000
            );
            return $this;
         },

        green : function( ) {
            $this.css({'backgroundColor': 'green'});
        },
        blue : function( ) {
            $this.css({'backgroundColor': 'blue'});
        }
    };

    $.fn.myPlugin = function( method ) {
        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 on jQuery.tooltip' );
        }
    };

})( jQuery );


$(document).ready(function () { 
    var myTest = $.fn.myPlugin();
    myTest.blue();
});

最終的に、myTest 変数を使用して新しく作成された div を制御できるようにしたいのですが、うまくいきません。明らかに欠けている部分や間違いがあると思いますが、それが私がここに投稿している理由です. これは私の最初のプラグインなので、誰かがこのテスト コードを立ち上げて実行するのを手伝ってくれたらありがたいです。現在、firebug レポート:「TypeError: myTest.blue は関数ではありません」

4

1 に答える 1

-1

メソッドを次のように呼び出します。

myTest.myPlugin("blue");

ここにデモがあります:http://jsfiddle.net/5p2Ba/

blueここでは jQuery オブジェクトのメソッドではありません。methodsクロージャーを使用してオブジェクトをモジュールにバインドするだけです。

于 2013-03-04T23:49:20.463 に答える