我正面临挑战,不知道如何在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 ...);
}
然而,这意味着我必须更改以前调用“callSWF”的50多个不同的地方,并用这个具有不同功能名称的代码块替换。这不好。
所以,我决定写一个扩展名。理想情况下,我可以这样打电话:
$('#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 );
我不知道该怎么做的部分是......动态传递函数名称(这是swf函数名)。所以,swfFuncName会有所不同,具体取决于我要与之通信的flash函数。
例如我可以这样做:
**$('#swfObj').callSWF("showMyName", 'whatever');**
**$('#swfObj').callSWF("anotherFunction", 1234);**
**$('#swfObj').callSWF("yetAnotherFunction", 'kbieure');**
任何想法?感谢。
答案 0 :(得分:1)
关键是使用大多数人称之为“数组”的语法而不是“对象”语法来引用$(this)[0]
或$(this)
的适当属性(视情况而定)
if($(this)[0])
{
$(this)[0][swfFuncName](param1);
}
else
{
$(this)[swfFuncName](param1);
}