Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript将字符串转换为函数调用_Javascript_Jquery - Fatal编程技术网

Javascript将字符串转换为函数调用

Javascript将字符串转换为函数调用,javascript,jquery,Javascript,Jquery,在下面的场景中,我需要根据html元素的数据属性调用函数 function func1(arg1){ alert("func1"); } function func2(arg2){ alert("func2"); } jQuery(document).on('click', '.func-class', function(){ var funcName = jQuery(this).data('func-name'); var funcArg = jQuery(thi

在下面的场景中,我需要根据html元素的数据属性调用函数

function func1(arg1){
    alert("func1");
}

function func2(arg2){
    alert("func2");
}

jQuery(document).on('click', '.func-class', function(){
  var funcName = jQuery(this).data('func-name');
  var funcArg = jQuery(this).data('func-arg');      
  //Need to call funcName(funcArg) here
});
HTML:

Func1
功能2
JSFiddle相同:

如果这些函数是在全局范围内定义的,则可以执行以下操作:

window[funcName](funcArg);
否则,我建议将它们放在如下对象中:

var functions = {
    "func1":func1,
    "func2":func2
};
functions[funcName](funcArg);

第二个函数实际上更安全,因为它有助于防止任意代码执行。

如果这些函数是在全局范围内定义的,则可以执行以下操作:

window[funcName](funcArg);
否则,我建议将它们放在如下对象中:

var functions = {
    "func1":func1,
    "func2":func2
};
functions[funcName](funcArg);

第二种方法实际上更安全,因为它有助于防止任意代码执行


但是您必须通过在对象中设置函数来获得函数的引用,例如(就像我在窗口对象中所做的那样),因为它在jQuery.ready函数中是私有的

$('.func-class').click(function(){

    var toCallArg = $(this).data('func-arg');        
    var toCall = function(toCallArg){            
        //your code
    };
    toCall(toCallArg);
});    
但是您必须通过在对象中设置函数来获得函数的引用,例如(就像我在窗口对象中所做的那样),因为它在jQuery.ready函数中是私有的

$('.func-class').click(function(){

    var toCallArg = $(this).data('func-arg');        
    var toCall = function(toCallArg){            
        //your code
    };
    toCall(toCallArg);
});