2013-02-17 104 views
-1

我正在寫一個jQuery插件,用於鉤住滾動和拖動事件,並在相關事件觸發時將元素旋轉到指向另一個元素。基本上我的插件只是檢測事件,計算正確的角度,並使用第三方插件相應地旋轉元素。爲了更好的解釋,你可以看到demos of my pluginJavascript:調用一個變量中定義的函數沒有eval

我不想強制使用某個旋轉插件,因此旋轉函數的名稱可能會有所不同。目前我正在使用eval來允許自定義函數名稱,但我想找到另一種方法來做到這一點。我試過Google搜索,但到目前爲止還沒有找到解決辦法。

那麼,有沒有辦法解決這個問題?旋轉功能的名稱存儲在settings.rotateFunction:

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

到目前爲止,我已經嘗試了「新功能(codeToEval)」的方法,但這種出於某種原因打破了使用$(本)。

回答

5

在Javascript對象構件(性質或功能)可使用這兩個符號進行訪問:

  • object.memberName
  • object["memberName"]

的第二個特別有用的成員不知道n在設計期間,而在運行期間。這就是爲什麼你可以這樣稱呼你的旋轉功能:

$(this)[settings.rotateFunction](angle); 
+2

謝謝,非常翔實的答案,完美的作品! – Schlaus 2013-02-17 21:01:48

4

使用以下語法:

$(this)[settings.rotateFunction](angle); 
+0

謝謝,這個作品完美!我將@Robert的答案標記爲更詳細一點的正確答案。 – Schlaus 2013-02-17 21:04:16

相關問題