如何编写jQuery帮助程序插件,以便我可以使用$.myPlugin()
调用它,而不是$.fn.myPlugin()
?
使用以下方式创建的插件,您只能通过$("selector").myPlugin()
或$.fn.myPlugin()
进行调用。
(function( $ ){
$.fn.myPlugin = function() {
};
})( jQuery );
,其中myPlugin()
是一个不需要this
引用的辅助函数。有什么想法吗?
答案 0 :(得分: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。
修改强>
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)
使用:
myHelper.HelperDate1();
myHelper.HelperDate2();
$("input").bind("click", myHelper.InputEventClick);
myHelper._xFunctionPrivate1() // ERROR _xFunctionPrivate1 is private
答案 1 :(得分:2)
@andres提供了定义jQuery插件的可能性之一,尽管通常使用$.extend
功能来定义插件。
(function($) { // plugin closure
var defaults = { ... };
$.extend({
myPlugin: function(options) { // when options are needed
options = $.extend({}, defaults, options);
// functionality afterwards
}
});
})(jQuery);