根据SO和this groovy example上的各种帖子,您可以将参数传递给JSON对象内的jQuery回调函数,如下所示:
$("myButton").on("click",{foo:"bar"},runStuff);
这很酷,但是如果我还需要runStuff
来处理正常的上下文呢?我正在努力解决这个问题:
让我们说我的回调是一个只打印它的参数的函数:
function printParam(param)
{
console.log(param);
}
并且应该像这样正常调用此函数:printParam("Hey!");
但也可以通过事件调用:
$("body").on("DOMNodeInserted",{foo: "Hey!"},printParam);
我试图像这样实施printParam
:
function printParam(param)
{
param = (event.data.foo) ? event.data.foo : param;
console.log(param);
}
但当然这不起作用,因为event
未定义。我有什么选择?
答案 0 :(得分:1)
这应该做你想要的。
function printParam(param)
{
param = (param.data) ? param.data.foo : param;
console.log(param);
}
答案 1 :(得分:1)
使用data
.on()
参数时,数据不会直接传递给回调,而是传递给Event对象的data
属性。功能
示例:
$("myButton").on("click",{foo:"bar"},runStuff);
function runStuff(event) {
console.log(event.data.foo);
}
因此,您可以使用以下代码致电runStuff
runStuff({data: {foo:"bar"}});
答案 2 :(得分:0)
尝试;
function printParam(param)
{
param1 = (param.data.foo) ? param.data.foo : '';
console.log(param1);
}
答案 3 :(得分:0)
更多地了解它,我得到了这个工作:
function printParam(event,data) //function to be called normally and as event callback
{
if (event){
data = (event.data.foo) ? event.data.foo : data;
}
console.log("%O",data);
}
可以通过以下方式调用printParam()
:
printParam(false,"bar");
摆弄它here。