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