2011-02-17 2 views
1

Supposons que nous avons besoin de construire dynamiquement des appels plug-ins tels queappel plugin jQuery dynamique avec des paramètres dynamiques en Javascript

$('#myDiv').myPlugin({a:'a',b:'b'}); 

sera quelque chose comme:

function funcCallBuilder(selector, func, opts){ 
    //dynamically construct plugin call here 
} 

utilisant:

funcCallBuilder('#myDiv', 'myPlugin', {a:'a',b:'b'}); 

Quelqu'un peut-il indiquer la bonne façon de faire cela?

+0

bonne question + 1 –

Répondre

4

Je ne sais pas si je comprends bien la question, mais si vous voulez simplement votre premier et troisième extrait de code pour avoir le même effet, il suffit d'utiliser apply:

function funcCallBuilder(selector, func, opts){ 
    func.apply($(selector), [opts]); 
} 

ou, si vous voulez vraiment passer le fonction comme une chaîne au lieu d'un objet de fonction (pas beaucoup de point à mon humble avis):

function funcCallBuilder(selector, func, opts){ 
    $.fn[func].apply($(selector), [opts]); 
} 
+0

eh oui, .Appliquer() devrait le faire pour vous. Bien que, je pense que ce devrait être $ .fn [func] .apply ($ (selector), opts); – KOGI

+0

$ .fn [func] .apply ($ (sélecteur), opts); travaillé pour moi! Merci beaucoup Tgr. – Sam3k

+0

Vous auriez dû utiliser [call] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call) ou regrouper l'argument; fixé maintenant. Si vous êtes sûr que vous n'avez besoin que d'un argument, la syntaxe plus simple '$ (selector) [func] (opts)' devrait fonctionner aussi. – Tgr

Questions connexes