2

私が利用しているjqueryプラグインのオブジェクトを取得しようとしています。最終的には、自分のニーズに合わせてプラグインに機能を追加できるようにしたいと考えています。現在、プラグインで定義した関数の呼び出しに問題があります。これが私が持っているコードのスケルトンです。

;(function($) {
      $.fn.myPlugin = function(o) {
                    .//Implementations here
                    .
                    .
            var Ex =  function(e){
                    //implementations here
            };

      }; 

})(jQuery);

この関数を内部に入れたい理由は、定義された変数のいくつかにアクセスしたいからです。関数 Ex を自分の html ファイルから呼び出せるようにしたいのですが、これまで試したことはすべてうまくいきませんでした。私が試したことの例は次のとおりです。

$.fn.myPlugin.Ex("x");

returnステートメントはどこにもありません。私は javascript や jquery が苦手ですが、学習しようとしています。私が間違っていることを説明するための助けをいただければ幸いです。

4

1 に答える 1

1

プラグインの設計パターンが間違っています。

あなたが望むものを達成するために、この一般的なものを使うことができます:

;(function($){
  var methods = {
     init: function() {
       //stuff
     },
     function1: function() {
       //stuff
     },
     function2: function(opt) {
       //stuff
     }
  };
  $.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);
    } 
  };
})(jQuery);

この構造で:

$.fn.myPlugin();電話しますinit()

$.fn.myPlugin("function1");電話しますfunction1()

$.fn.myPlugin("function2",option_exemple);電話しますfunction2(opt)

免責事項 : 私はこれを頻繁に使用しますが、私のものではありません。どこで見つけたか覚えていません*。

于 2012-12-07T23:56:11.663 に答える