Appeler un plugin jQuery sans spécifier d'éléments
Disons que j'ai le plugin jQuery suivant:
$.fn.myPlugin = function () {
//plugin code
}
Normalement, vous appelez un plugin sur un certain nombre d'éléments, comme tel:
$("body").myPlugin();
Est-il possible d'appeler mon plugin sans spécifier d'élément?
J'ai essayé de l'appeler comme tel: $.myPlugin();
, mais qui ne fonctionne pas.
Ce qui fonctionne c'est ceci: $().myPlugin();
, mais est-ce la bonne façon de l'invoquer?
3 réponses
La façon rapide de l'écrire est la suivante:
$.myPlugin = function () {
// Plugin code
}
La façon droite de l'écrire est la suivante:
(function ($) {
$.extend({
myPlugin: function () {
// plugin code
}
});
})(jQuery);
Cela peut sembler un peu déroutant au début, mais c'est un modèle jQuery commun.
(function($){
// Code
})(jQuery);
Ce code crée une fonction anonyme et l'appelle en passant {[4] } comme argument. L'intérieur de la fonction, cet argument est lié à $
. La raison pour laquelle cela est fait qu'il vous permet de travailler avec le $
même si jQuery est en cours d'exécution dans no-conflict mode.
La deuxième partie est $.extend
. Il étend fondamentalement l'objet jQuery lui-même, lorsqu'il est appelé avec un seul argument.
Appeler le plugin (dans le cas rapide et le bon) est:
$.myPlugin();
Je pense que vous cherchez jQuery.extension ():
jQuery.extend({
func: function() {
alert('test');
}
});
$.func();
Ne utiliser la collection si vous écrivez quelque chose de différent, comme $('a').myPlugin()
? Si ce n'est pas le cas, alors pourquoi le mettez-vous dans $.fn
? Peut - être que vous vouliez l'injecter dans jQuery
lui-même.
Si fait travailler sur une collection, mais parfois une collection vide a du sens, alors je pense que votre invocant devrait être $([])
- passer un Array
vide à jQuery
Vous donne une collection vide; passer rien du tout semble vous donner une collection contenant document
.