2011-02-05 5 views
2

$.fn.myPlugin()ではなく、$.myPlugin()でjQueryヘルパープラグインを呼び出すにはどうすればよいですか?jQueryヘルパープラグインの作成

プラグインを次のように作成した場合は、$("selector").myPlugin()または$.fn.myPlugin()でのみ呼び出すことができます。

(function($){ 
    $.fn.myPlugin = function() { 
    }; 
})(jQuery); 

myPlugin()this参照を必要としないヘルパー関数です。何か案が?

答えて

2

@andresは、jQueryのプラグインを定義する可能性の一つを提供してきました機能性。

(function($) { // plugin closure 

    var defaults = { ... }; 

    $.extend({ 
     myPlugin: function(options) { // when options are needed 
      options = $.extend({}, defaults, options); 
      // functionality afterwards 
     } 
    }); 
})(jQuery); 
3
(function($){ 

    $.myPlugin = function() { 

     var HelperDate1 = function() { ... }; 
     var HelperDate2 = function() { ... }; 
     var HelperMath1 = function() { ... }; 


     return { 
      method1: HelperDate1, 
      method2: HelperDate2, 
      method2: HelperMath1 

     }; 

    }(); 

})(jQuery); 

用途:

$.myPlugin.method1(); 
$.myPlugin.method2(); 

しかし、あなたは、このためのjQueryを必要としません。

EDIT:

var myHelper = (function($){ 

    var 
    pub = this, //public 
    pri = {};  //private 


    // public method 
    pub.HelperDate1 = function() { 
     //... 
    }; 

    pub.HelperDate2 = function() { 
     //... 
     pri._xFunctionPrivate2(); // can call private methods 
    }; 

    pub.HelperMath1 = function() { 
     //... 
    }; 

    // public event method 
    pub.InputEventClick = function(event) { 
     //... 
     // this is the element input, not the environment of the helper 
     $(this).val("new value"); // example 

    }; 

    // private method 
    pri._xFunctionPrivate1 = function() { 
     //... 
    }; 

    pri._xFunctionPrivate2 = function() { 
     //... 
    }; 


    return public; 

}).call({}, jQuery); //The first parameter is in context (this) 

使用:それはあなたが$.extendを使用してプラグインを定義することが、より一般的なのですけれども

myHelper.HelperDate1(); 
myHelper.HelperDate2(); 
$("input").bind("click", myHelper.InputEventClick); 
myHelper._xFunctionPrivate1() // ERROR _xFunctionPrivate1 is private 
+1

この*のためにjQueryは必要ありません。 –

+0

これを使わずにヘルパーを作成したい場合は、jQueryを使わずにヘルパーを作成できます –