jQuery Plugin: Ajout de la fonctionnalité de rappel

J’essaie de donner la fonctionnalité de rappel de mon plugin, et j’aimerais qu’il fonctionne d’une manière quelque peu traditionnelle:

myPlugin({options}, function() { /* code to execute */ }); 

ou

 myPlugin({options}, anotherFunction()); 

Comment gérer ce paramètre dans le code? Est-il traité comme une seule entité? Je suis presque sûr de savoir où je placerais le code d’exécution, mais comment puis-je obtenir le code à exécuter? Je n’arrive pas à trouver beaucoup de littérature sur le sujet, alors merci d’avance pour votre aide.

    Il suffit d’exécuter le rappel dans le plugin:

     $.fn.myPlugin = function(options, callback) { if (typeof callback == 'function') { // make sure the callback is a function callback.call(this); // brings the scope to the callback } }; 

    Vous pouvez également avoir le rappel dans l’object options:

     $.fn.myPlugin = function() { // extend the options from pre-defined values: var options = $.extend({ callback: function() {} }, arguments[0] || {}); // call the callback and apply the scope: options.callback.call(this); }; 

    Utilisez-le comme ceci:

     $('.elem').myPlugin({ callback: function() { // some action } }); 

    Je ne sais pas si j’ai bien compris votre question. Mais pour la deuxième version: cela appellerait immédiatement une autre fonction.

    Fondamentalement, votre plugin devrait être une sorte de fonction qui ressemble à ceci:

     var myPlugin = function(options, callback) { //do something with options here //call callback if(callback) callback(); } 

    Vous devez fournir un object de fonction comme callback, soit function(){...} ou anotherFunction (without () ).

    Ramener une explosion du passé.

    Il convient de noter que si vous avez deux arguments passés, par exemple:

     $.fn.plugin = function(options, callback) { ... }; 

    Ensuite, vous appelez le plug-in sans l’argument options, mais avec un rappel, vous rencontrerez des problèmes:

     $(selector).plugin(function() {...}); 

    Je l’utilise pour le rendre un peu plus flexible:

     if($.isFunction(options)) { callback = options } 

    Changez votre fonction de plugin pour prendre un deuxième paramètre. En supposant que l’utilisateur passe une fonction, ce paramètre peut être traité comme une fonction normale.
    Notez que vous pouvez également faire du rappel une propriété du paramètre options.

    Par exemple:

     $.fn.myPlugin = function(options, callback) { ... if(callback) //If the caller supplied a callback callback(someParam); ... }); 

    Je pense que cela pourrait vous aider

     // Create closure. (function( $ ) { // This is the easiest way to have default options. var settings = $.extend({ // These are the defaults. onready: function(){}, //Rest of the Settings goes here... }, options ); // Plugin definition. $.fn.hilight = function( options ) { //Here's the Callback settings.onready.call(this); //Your plugin code goes Here }; // End of closure. })( jQuery ); 

    Un exemple un peu tard, mais cela peut être utile. L’utilisation des arguments peut créer les mêmes fonctionnalités.

     $.fn.myPlugin = function() { var el = $(this[0]); var args = arguments[0] || {}; var callBack = arguments[1]; ..... if (typeof callback == 'function') { callback.call(this); } }