Javascript 通过链接jQuery将函数作为参数传递
我有一个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
$('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);});你让我使用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);});代码>
<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);
}
});