0

jQueryプラグインを開発するのはこれが初めてです。基本的に、私はこれを書いて、関数を一緒にマージし、それらの関数をより簡単に使用できるようにします。たとえば、メソッドを使用してクラスを作成するようなものです。

私が問題を抱えているのは、要素で jQuery コマンドを使用した後、その関数内のすべての情報が失われ、後で使用することができないということです。関数をメソッドとして、プラグインを一種のクラスとして使用したいと思います。Raphael が作成したオブジェクトをその中に保存し、必要に応じて後で操作したいと考えています。これが私の例です:

(function($) {
    $.fn.myPlugin = function(step) {
        if(step == 'step1') {
            var test = 'Function OK!';
            console.log(test);
        }
        if(step == 'step2') {
            console.log(test);
        }
    }
})(jQuery);

$('#elem').myPlugin('step1');
$('#elem').myPlugin('step2');

もちろん、最初のコンソール ログでは変数が出力されますが、2 番目のログでは undefined が返されます。

閉じた変数を使用して、jQuery を自己依存クラスとして機能させる方法はありますか? 前述したように、私は Raphael オブジェクトを作成し、後でそれらを操作したいと考えています。そのため、Raphael オブジェクトを変数 ( var graph = Raphael('#elem', options);) に割り当てる必要があるため、後で次のような関数を呼び出してアクセスする必要があります。graph.somefunction(doThis);

これどうやってするの?私は何か間違ったことをしていますか?ありがとう..

4

1 に答える 1

3

各要素にデータを格納します。

$.fn.myPlugin = function(step){

    return this.each(function(){
        var $elem = $(this);
        if(step == 'step1') {
            $elem.data('test','Function OK!');
            console.log('step1',this.id,$elem.data('test'));
        }
        if(step == 'step2') {
            console.log('step2',this.id,$elem.data('test'));
        }
    });

};

$('#elem').myPlugin('step1').myPlugin('step2');

また、異なるステップ進行で一度に複数の要素をサポートするようになりました。

$('#elem1').myPlugin('step1');
$('#elem2').myPlugin('step1').myPlugin('step2');
$('#elem1').myPlugin('step2');

http://jsfiddle.net/FaaBV/

于 2013-04-11T18:45:46.567 に答える