Bonjour tout le monde, j'étais en train de me faire un petit modèle de plugin jQuery quand je suis tombé sur un os. Les plugins suivant ce modèle devraient permettre l'appel à des méthodes en plus de l'initialisation comme suit :
$('element').pluginName({option:'value'});
$('element').pluginName('action', {option:'value'});
Le modèle :
Mon souci viens de l'appel à window[action](el) à la ligne 21 qui devrait normalement appeler ma fonction mais le contexte ne doit pas être le bon et après plusieurs essais (window['jQuery'][action], $[action],...) je n'y suis pas arrivé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 (function($) { $.fn.pluginName = function(action, options) { if(typeof(action) == 'object' || typeof(action) == 'undefined') { options = action; action = 'initialize'; } return this.each(function(el){ el = $(this); setOptions(el); doAction(el); }); function setOptions(el) { el.data('pluginName:options', $.extend({}, $.fn.pluginName.options, el.data('my_plugin:options'), options)); } function doAction(el) { alert('do : '+action); window[action](el); } // Méthodes du plugin function initialize(el) { alert('initialize') } }; $.fn.pluginName.options = { parameter: 'value' }; })(jQuery);
Quelqu'un pour éclairer ma lanterne ?
Partager