Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 通过链接jQuery将函数作为参数传递_Javascript_Jquery - Fatal编程技术网

Javascript 通过链接jQuery将函数作为参数传递

Javascript 通过链接jQuery将函数作为参数传递,javascript,jquery,Javascript,Jquery,我有一个jQuery代码: $('a[name=dialog]').click(function(e) { var param = $(this).attr("name"); var param = replaceAll(param,"'","\""); var data = JSON.parse(param); $("dialogTitle").text(data.caption); $("dialogBody

我有一个jQuery代码:

$('a[name=dialog]').click(function(e) {          
    var param = $(this).attr("name");       
    var param = replaceAll(param,"'","\"");     
    var data = JSON.parse(param);
    $("dialogTitle").text(data.caption);
    $("dialogBody").text(data.bodyText);
 /* here I'm trying to assign event to button*/
   $("#OkButton").click(window[data.myFunc]);   
});
});
在html代码中:

<ul>
<li><a href="#dialogConfirmation" name="{'caption':'MyCaption', 'bodyText':'BODY TEXT!!!', 'myFunc':'foo'}">link</a></li>
</ul>
<script>
function foo(){
alert('test');
};
函数foo(){ 警报(“测试”); };
我的问题是如何通过JSON将函数作为参数传递?可能吗?有人知道其他解决办法吗?特别注意以参数为参数的传递函数。 非常感谢。

最好使用jquery的属性,而不是使用
name
属性来存储JSON


在JSON中不能将函数作为参数传递,因为它只是文本,但是可以传递函数名,然后调用它。您只需确保
window[data.myFunc]
是一个实际函数

最好使用jquery的属性,而不是使用
name
属性来存储JSON


在JSON中不能将函数作为参数传递,因为它只是文本,但是可以传递函数名,然后调用它。您只需确保
window[data.myFunc]
是一个实际函数

正如JohnP所说,使用数据API似乎更合适。您需要以不同的方式定义函数名和参数,可能使用不同的数据键

使用数据API的简化示例:

HTML:


Fiddle:

正如JohnP所说,使用数据API似乎更合适。您需要以不同的方式定义函数名和参数,可能使用不同的数据键

使用数据API的简化示例:

HTML:


Fiddle:

看起来你是以JSON字符串的形式正确传递函数名的,有什么问题?看起来你是以JSON字符串的形式正确传递函数名的,有什么问题?你让我使用HTML5,但我用老派风格重写了它。无论如何,谢谢你们,孩子们!HTML:
函数vss(a){alert(a+“vss”);}
​jQuery:
window.foo=函数(params){alert(params);}$('a')。单击(function(){var param=$(this.attr(“name”);var data=JSON.parse(param);var fn=data.func,params=data.params;if(typeof window[fn]=='function'){window[fn](params);});​函数vss(a){alert(a+“vss”);}
​jQuery:
window.foo=函数(params){alert(params);}$('a')。单击(function(){var param=$(this.attr(“name”);var data=JSON.parse(param);var fn=data.func,params=data.params;if(typeof window[fn]=='function'){window[fn](params);});​
<a href='#' data-fn='foo' data-params='{"john":"doe"}'>link</a>​
// define the function
window.foo = function(params) {
    console.log(params); // the params object
};
$('a').click(function() {

    // grab the function name and params from data
    var fn = $(this).data('fn'),
        params = $(this).data('params');

    // execute
    if ( typeof window[fn] == 'function' ) {
        window[fn](params);
    }
});​