Je suis confronté à un défi et je ne sais pas comment résoudre ce problème dans jQuery.JQuery: comment écrire une fonction plugin qui prendra un nom de fonction sous forme de chaîne et l'exécutera?
Mon but est d'écrire une fonction étendue remplaçant la fonction Facebook callSWF.
Facebook callSWF run like that: **domObj.callSWF("myFunctionName", param1, param2 ... paramx);**
Maintenant, j'ai besoin de remplacer cette fonction. Pour jQuery, je peux appeler Flash via JS comme ça:
if($('#swfObj')[0])
{
$('#swfObj')[0].myFunctionName(param1, param2 ...);
}
else
{
$('#swfObj').myFunctionName(param1,param2 ...);
}
Cependant, cela signifie que je dois changer pour plus de 50 endroits différents que l'appel précédent « callSWF » et les remplacer par ce bloc de code avec des noms de fonction . Ce n'est pas bon. Par conséquent, je décide d'écrire une extension. idéalement, je peux appeler comme ceci:
$ ('# swfObj'). callSWF ("myFunctionName", param1, param2 ...);
je commence à écrire la fonction et coincé .... voici mon code à ce jour:
(function($){
$.fn.callSWF = function(swfFuncName, param1) {
if($(this)[0])
{
$(this)[0].**swfFuncName**(param1);
}
else
{
$(this).**swfFuncName**(param1);
}
return this;
};
})(jQuery);
La partie que je ne sais pas comment faire est ... de passer dynamicially dans le nom de la fonction (qui est le nom de la fonction swf). Donc, swfFuncName sera différent en fonction de la fonction flash avec laquelle je vais communiquer.
je peux faire par exemple que:
**$('#swfObj').callSWF("showMyName", 'whatever');**
**$('#swfObj').callSWF("anotherFunction", 1234);**
**$('#swfObj').callSWF("yetAnotherFunction", 'kbieure');**
une idée? Merci.
Qu'en est-il si le le nombre de param varie? par exemple, certaines fonctions peuvent en avoir une, certaines peuvent en avoir plus d'une ... – murvinlai
cela fonctionne. Je dois juste trouver une meilleure façon de gérer plusieurs paramètres. :) – murvinlai
pour gérer plusieurs paramètres, essayez: 'var elem $ (this); = elem [swfFuncName] .apply (elem, [param1, param2, param3]); 'Lire à propos de [appliquer] (https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/function/apply) – Anurag