Appel d'une fonction par une string depuis un plugin
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 :
Code:
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); |
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é.
Quelqu'un pour éclairer ma lanterne ?