将变量传递给回调函数的正确方法

发布于 2024-11-16 08:37:19 字数 258 浏览 3 评论 0原文

当我有

$('#div').click(function(someVar){//do something with soneVar});

但我想要一个命名回调函数时,我是否正确地处理了传递的 someVar

$('#div').click(someFunction(someVar));
function someFunction(someVar){}

When I have

$('#div').click(function(someVar){//do something with soneVar});

but I want to have a named callback function, am I palcing the passed someVar correctly?

$('#div').click(someFunction(someVar));
function someFunction(someVar){}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你的笑 2024-11-23 08:37:19

你的两个例子都是错误的。

您的第一个示例为名为 someVar 的回调方法创建一个参数;它将成为 jQuery 传递给处理程序方法的 event 对象。

第二个示例立即调用该方法,然后将其结果作为事件处理程序传递给 click 方法。

您需要传递一个函数表达式,该表达式使用来自外部作用域的参数调用您的函数(使用闭包):

$('#div').click(function() { someFunction(someVar); });

Both of your examples are wrong.

Your first example creates a parameter to the callback method named someVar; it will become the event object that jQuery passes to the handler method.

The second example calls the method immediately, then passes its result to the click method as an event handler.

You you need to pass a function expression that calls your function with a parameter from the outer scope (using a closure):

$('#div').click(function() { someFunction(someVar); });
不知所踪 2024-11-23 08:37:19

click 回调函数将传递一个 jQuery Event 对象,而不是 someVar

您必须在回调函数内自己调用您的函数。

$('#div').click(function(ev) {
    someFunction(someVar);
}

function someFunction(someVar) {
     ...
}

或者,执行以下操作:

$('#div').click({someVar: someVar}, someFunction);

function someFunction(ev) {
    // your var is now in ev.data.someVar
}

The click callback function will be passed a jQuery Event object, not someVar.

You have to call your function yourself within the callback function.

$('#div').click(function(ev) {
    someFunction(someVar);
}

function someFunction(someVar) {
     ...
}

Alternatively, do:

$('#div').click({someVar: someVar}, someFunction);

function someFunction(ev) {
    // your var is now in ev.data.someVar
}
东走西顾 2024-11-23 08:37:19

考虑将参数作为事件数据传递给 click 事件(或任何带有 jQ​​uery 的事件): http://api. jquery.com/click/

Look into passing the arguments as event data to the click event (or any event with jQuery): http://api.jquery.com/click/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文