Javascript 将参数传递给jquery回调,但也在外部使用回调
根据SO上的各种帖子,您可以将参数传递给JSON对象内的jQuery回调函数,如下所示:Javascript 将参数传递给jquery回调,但也在外部使用回调,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,根据SO上的各种帖子,您可以将参数传递给JSON对象内的jQuery回调函数,如下所示: $("myButton").on("click",{foo:"bar"},runStuff); 这很酷,但是如果我还需要runStuff来处理正常的上下文呢?我正在努力解决这个问题: 假设我的回调函数只打印其参数: function printParam(param) { console.log(param); } 这个函数应该像这样正常调用:printParam(“嘿!”)但也通过事件: $(
$("myButton").on("click",{foo:"bar"},runStuff);
这很酷,但是如果我还需要runStuff
来处理正常的上下文呢?我正在努力解决这个问题:
假设我的回调函数只打印其参数:
function printParam(param)
{
console.log(param);
}
这个函数应该像这样正常调用:printParam(“嘿!”)代码>但也通过事件:
$("body").on("DOMNodeInserted",{foo: "Hey!"},printParam);
我试图实现如下printParam
:
function printParam(param)
{
param = (event.data.foo) ? event.data.foo : param;
console.log(param);
}
但这当然不起作用,因为事件
未定义。我的选择是什么?试试看
function printParam(param)
{
param1 = (param.data.foo) ? param.data.foo : '';
console.log(param1);
}
这应该是你想要的
function printParam(param)
{
param = (param.data) ? param.data.foo : param;
console.log(param);
}
再搞一点,我就有办法了:
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");
摆弄它。当使用.on()
的数据
参数时,数据不会直接传递到回调,而是传递到函数的事件对象的数据
属性中
例如:
$("myButton").on("click",{foo:"bar"},runStuff);
function runStuff(event) {
console.log(event.data.foo);
}
因此,您可以使用以下命令调用runStuff
:
runStuff({data: {foo:"bar"}});