javascript - 将参数传递给 jquery 回调,但也可以在外部使用回调

标签 javascript jquery google-chrome

根据 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 未定义。我在这里有什么选择?

最佳答案

使用 .on()data 参数时,数据不会直接传递给回调,而是在 data 中传递给函数的 Event 对象的属性。

示例:

$("myButton").on("click",{foo:"bar"},runStuff);
function runStuff(event) {
  console.log(event.data.foo);
}

所以你可以调用runStuff:

runStuff({data: {foo:"bar"}});

关于javascript - 将参数传递给 jquery 回调,但也可以在外部使用回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764190/

相关文章:

javascript - 为什么我的 html 表单没有通过 ajax 将值返回到views.py?

javascript - Google map API -- map 不显示

javascript - jQuery 从空列和行中清理 Flexbox 结构

google-chrome - 浏览器的HTTP缓存的存储位置在哪里?磁盘或内存

Javascript 自定义排序函数

javascript - 从 React Admin 中的同一端点创建多个资源以应用不同的过滤器

javascript - 使用输入文本框搜索和过滤 html 表数据

javascript - 如何只显示最后一个ajax请求结果

html - Accesskey 不适用于 chrome 中的 h1 元素

javascript - 如何检查元素是否是脚本