-1

我正在编写一个 jQuery 插件,它钩住滚动和拖动事件,并在触发相关事件时旋转一个元素以指向另一个元素。基本上我的插件只是检测事件,计算正确的角度,并使用第三方插件相应地旋转元素。为了更好的解释,您可以查看我的插件的演示

我不想强制使用某个旋转插件,所以旋转函数的名称可能会有所不同。目前我正在使用 eval 来允许自定义函数名称,但我想找到另一种方法来做到这一点。我试过谷歌搜索,但到目前为止还没有找到解决方案。

那么,有没有办法解决这个问题?旋转函数的名称存储在 settings.rotateFunction 中:

eval("$(this)." + settings.rotateFunction + "(angle)");

到目前为止,我已经尝试过“new Function(codeToEval)”方法,但是由于某种原因,这破坏了 $(this) 的使用。

4

2 回答 2

5

在 Javascript 中,可以使用以下两种表示法访问对象成员(属性或函数):

  • object.memberName
  • object["memberName"]

当成员在设计时而不是在运行时未知时,第二个特别有用。这就是为什么你可以这样调用你的旋转函数:

$(this)[settings.rotateFunction](angle);
于 2013-02-17T20:47:00.513 回答
4

使用以下语法:

$(this)[settings.rotateFunction](angle);
于 2013-02-17T20:46:51.090 回答