JQuery:如何编写一个插件函数,将函数名称作为字符串并运行它?

标签 jquery function dynamic

我面临着挑战,不知道如何在 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');**

有什么想法吗?谢谢。

最佳答案

关键是使用大多数人所说的“数组”语法而不是“对象”语法来引用 $(this)[0]$(this )(视情况而定)

 if($(this)[0])
 {
  $(this)[0][swfFuncName](param1);
 }
 else
 {
  $(this)[swfFuncName](param1);
 }

关于JQuery:如何编写一个插件函数,将函数名称作为字符串并运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4056977/

相关文章:

javascript - jQuery 可编辑身份证号码

javascript - div 边框内的动画图像

jquery - 我回来后的动态网页

jquery - 为什么我的 jquery 在 jsFiddle 上可以工作,但在我的 localHost 上却不行?

javascript - 如何在应用程序和我们的网站中禁用方向横向?

function - 在 Lua 中连接函数名称

javascript - 获取匿名函数名

matlab - 如何在Matlab中调用放在另一个目录中的函数?

c# - 动态类型传递和实例化——如何?

java - 使用 RecyclerView 动态绑定(bind)简单待办事项列表中的列表项