var foo1,foo2;

switch (fn)
{
    case "fade"  : foo1 = "fadeOut"; foo2 = "fadeIn"; break;
    case "slide" : foo1 = "slideUp"; foo2 = "slideDown"; break;
}

eval("$('.cls1')." + foo1 + "();");
currentSlideIndex = currentSlideIndex + n;
eval("$('.cls1')." + foo2 + "();");

在不使用 eval 的情况下有更好的方法来实现这一目标吗?除非绝对必要,否则我不是非常喜欢使用 eval。

最佳答案

由于存储在 foo1foo2 中的函数名称是 $('.cls1') 返回的对象的属性,因此以下应该有效:

$('.cls1')[foo1]();

foo2 相同。

关于javascript - 根据包含函数名称的字符串调用函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2763213/

10-13 00:51