[英]Passing function as parameter via link 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").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');
};
我的问题是如何通过JSON传递函数作为参数? 可能吗? 有人知道其他解决方案吗? 特别注意以参数为参数的传递函数。 谢谢!
正如JohnP所说,使用数据API似乎更合适。 您需要以单独的方式定义函数名称和参数,可能使用不同的数据键。
使用数据API的精简示例:
HTML:
<a href='#' data-fn='foo' data-params='{"john":"doe"}'>link</a>
JS / jQuery:
// 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);
}
});
小提琴: http : //jsfiddle.net/jzRPa/
使用jquery的数据API而不是使用name
属性存储JSON会更好。
您不能将函数作为参数传递给JSON,因为它只是文本,但是您可以传递函数名然后调用它。 您只需要确保window[data.myFunc]
是实际功能即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.