3
我面临一个挑战,不知道如何在jQuery中解决这个问题。JQuery:如何编写一个插件函数,它将函数名称作为字符串并运行它?
我的目的是写一个扩展函数来替换Facebook的callSWF函数。
Facebook callSWF run like that: **domObj.callSWF("myFunctionName", param1, param2 ... paramx);**
现在,我需要替换该功能。 jQuery的,我可以通过JS调用Flash这样的:
if($('#swfObj')[0])
{
$('#swfObj')[0].myFunctionName(param1, param2 ...);
}
else
{
$('#swfObj').myFunctionName(param1,param2 ...);
}
然而,这意味着我必须要改变了50+不同的地方,以前叫“callSWF”,并用这个代码块具有不同的功能名称替换。那不好。
所以,我决定写一个扩展名。理想情况下,我可以这样打电话:
$('#swfObj')。callSWF(“myFunctionName”,param1,param2 ...);
我开始写的功能和卡....这里是到目前为止我的代码:
(function($){
$.fn.callSWF = function(swfFuncName, param1) {
if($(this)[0])
{
$(this)[0].**swfFuncName**(param1);
}
else
{
$(this).**swfFuncName**(param1);
}
return this;
};
})(jQuery);
,我不知道该怎么办是...的部分dynamicially传中,函数名称(这是swf函数名称)。因此,swfFuncName将根据我要与之通信的闪光灯功能而有所不同。
e.g我能做到这一点:
**$('#swfObj').callSWF("showMyName", 'whatever');**
**$('#swfObj').callSWF("anotherFunction", 1234);**
**$('#swfObj').callSWF("yetAnotherFunction", 'kbieure');**
什么想法?谢谢。
样,如果什么参数数量是多少?例如某些功能可能有一个,有些可能有多个... – murvinlai 2010-10-30 02:30:06
它的工作原理。我只需要找出更好的方法来处理多个参数。 :) – murvinlai 2010-10-30 09:26:46
来处理多个参数,请尝试:'var elem $(this); = elem [swfFuncName] .apply(elem,[param1,param2,param3]);'阅读[apply](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply) – Anurag 2010-10-30 19:31:37