在不使用eval的情况下调用jquery文档中的字符串函数

时间:2015-11-11 19:27:43

标签: jquery

我的html代码中有一个div元素,类名为#34; .myButton"它包含一个名为

的数据对象
data-action="myFunctionToCall"

HTML

<a href="#" class="myButton" data-action="startPaymentOverAction">Start Over</a>

我还有一个jquery文档就绪对象,里面有我的按钮事件。

$(function() {

   function myFunctionToCall( arg ){
    console.log("FUNCTION CALLED");
   }

    $('.myButton').click(function( event ){
        var action = $(this).data('action');
        event.preventDefault();
        if(action){
            document[action](event);

        }
    });
});

问题是如果我使用eval,我只能使这个功能起作用。 documentaction;我将得到错误&#34; Uncaught TypeError:document.paymentOptionAction不是函数&#34;。 如何在不使用eval的情况下解决这个问题。

2 个答案:

答案 0 :(得分:0)

您的功能未在文档对象上定义。你在函数内部 - SELECT A.Spieltag, A.Datum, A.Uhrzeit, B.Name AS Heim FROM Spiel AS A JOIN Verein AS B ON A.Heim = B.V_ID AND B.Liga = 1 WHERE Spieltag = 5 GROUP BY A.Spieltag, A.Datum, A.Uhrzeit, B.Name HAVING AVG(Tore_Heim) < 1

这种最简单的方法是:

$(function() {

答案 1 :(得分:0)

你必须定义要调用的函数,如:jsfiddle

window.startPaymentOverAction=function(event){
  alert('action data');
}

$(function() {

    $('.myButton').click(function( event ){
        var action = $(this).data('action');
        event.preventDefault();
        if(action){
           window[action]( event );
        }
    });
});