2009-07-19 22 views
2

$ .abc = function(){}のようなjQueryプラグインがあるとします。今私は、$ .abcと同じスコープを使用し、その機能を拡張する余分なモジュールを提供したいと思います。例えば、私のabcプラグインでは、変数mod1 = trueであるかどうかチェックします。その場合、私は自動的にmod1の関数を呼び出します。jQueryプラグインを拡張する

私の基本的なプラグインと同じ名前空間を共有できるようにmod1を書くにはどうすればいいですか?私はプラグインから呼び出すことができます。 mod1.getFiles();

ありがとうございます。これはあまり明確でない場合は申し訳ありません。ご質問がありましたら、再度お話します。

更新:プラグインバーの機能テストを呼び出すにはどうすればよいですか?

$.fn.pluginFoo = function() { 
    ... 
    CALL FUNCTION TEST OF PLUGINBAR 
    ... 
}; 

$.fn.pluginBar = function() { 
    ... 
    function test() { 
     alert('this is a test'); 
    } 
    ... 
}; 

答えて

2

共有データオブジェクトを作成する必要はありません。単純にreturnステートメントを使用して、あるプラグインのいくつかの機能を他のプラグインに公開することができます。

$.fn.pluginFoo = function() { 
    // here you can access public "members" of pluginBar 
    $.fn.pluginBar.fn3(); 
    $.fn.pluginBar.fn4(); 
} 


$.fn.pluginBar = function() { 
    // private "members" (only this plugin can access them) 
    var fn1 = function() { ... } 
    var fn2 = function() { ... } 

    // public "members" (other plugin can access that as well) 
    // fn3 is defined in the return, fn4 allows to access private function fn1 
    return { 
     fn3: function() { ... }, 
     fn4: fn1 
    }; 
} 
+0

いいです。私はこれが可能だったことを知っている。ありがとう:) –

0

あなたは2つのプラグインは、データ/機能の共有セットにアクセスしたい、あなたはこのようにそれを行うことができます:

var myPluginData = { 
    flag: true, 
    alertNothing: function() { 
     alert('I do Nothing'); 
    } 
}; 

$.fn.pluginFoo = function() { 
    ... 
    myPluginData.flag = false; 
    myPluginData.alertNothing(); 
    ... 
}; 

$.fn.pluginBar = function() { 
    ... 
    myPluginData.alertNothing(); 
    myPluginData.flag = true; 
    ... 
}; 

あなたが実際にそれのためにオブジェクトを定義する必要はありませんが、それ物事をより明瞭にする。

+0

pluginBarという関数をpluginFoo関数から呼び出したいとします。それ、どうやったら出来るの? –

関連する問題