我正在编写一个jQuery插件,它挂钩滚动和拖动事件,并在触发相关事件时旋转元素指向另一个元素。基本上我的插件只检测事件,计算正确的角度,并使用第三方插件相应地旋转元素。为了更好地解释,您可以看到demos of my plugin。
我不想强制使用某个旋转插件,因此旋转功能的名称可能会有所不同。目前我正在使用eval来允许自定义函数名称,但我想找到另一种方法。我试过谷歌搜索,但到目前为止还没有找到解决方案。
那么,有没有办法解决这个问题?旋转功能的名称存储在settings.rotateFunction:
中eval("$(this)." + settings.rotateFunction + "(angle)");
到目前为止,我已尝试过“new Function(codeToEval)”方法,但由于某种原因,这会破坏$(this)的使用。
答案 0 :(得分:5)
在Javascript对象中,可以使用以下两种表示法访问成员(属性或函数):
object.memberName
object["memberName"]
第二个在成员在设计时不知道而在运行时期间特别有用。这就是为什么你可以用这种方式调用你的旋转功能:
$(this)[settings.rotateFunction](angle);
答案 1 :(得分:4)
使用以下语法:
$(this)[settings.rotateFunction](angle);