我需要运行一个带有部分动态变量的函数。
要运行的功能:
$.element_gallery = function(state){}
正在调用它的代码:
var name = "gallery";
window["$.element_"+name]('refresh');
此方法似乎适用于传统的Javascript函数,但不适用于jQuery函数。有没有办法在不使用eval()
而不更改函数名的情况下运行它?
答案 0 :(得分:2)
将window
替换为$
$["element_" + name]("refresh")
答案 1 :(得分:1)
当你执行window["$.foo"]
时,它正在窗口对象上寻找一个名为$.foo
的属性。但是,如果您使用的是jQuery函数,它存储在$
对象的jQuery(或window
)属性中,因此您想要的函数的实际位置是窗口。$ [“foo” ]。将您的代码更改为:
var name = "gallery";
window.$["element_"+name]('refresh');
或者,由于您可以在不指定window.
的情况下访问全局变量,只需:
var name = "gallery";
$[".element_"+name]('refresh');