2011-02-05 2 views
2

Как написать подключаемый модуль jQuery-помощника, чтобы я мог вызвать его с помощью $.myPlugin(), а не $.fn.myPlugin()?Создание вспомогательного модуля jQuery

С помощью плагина, созданного следующим образом, вы можете его назвать только $("selector").myPlugin() или $.fn.myPlugin().

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

, где myPlugin() вспомогательная функция, которая не нуждается в this ссылки. Есть идеи?

ответ

2

@andres предоставил один из возможностей определения плагин JQuery, хотя это более привычно, что вы определяете плагин с помощью $.extend функциональность.

(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) 

Использование:

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

Что значит * ему не нужен jQuery для этого *? –

+0

Если вы просто хотите создать помощника без этого, вы можете сделать это без jQuery –

Смежные вопросы