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.