【问题标题】:the right way to pass variable to a callback function [duplicate]将变量传递给回调函数的正确方法[重复]
【发布时间】:2011-06-21 13:14:28
【问题描述】:
当我有
$('#div').click(function(someVar){//do something with soneVar});
但是我想要一个命名的回调函数,我是否正确地传递了someVar?
$('#div').click(someFunction(someVar));
function someFunction(someVar){}
【问题讨论】:
标签:
javascript
jquery
callback
anonymous-function
【解决方案1】:
你的两个例子都是错误的。
您的第一个示例为名为@987654321@ 的回调方法创建了一个参数;它将成为 jQuery 传递给处理程序方法的 event 对象。
第二个示例立即调用该方法,然后将其结果作为事件处理程序传递给click 方法。
您需要传递一个函数表达式,该表达式使用外部作用域的参数调用您的函数(使用闭包):
$('#div').click(function() { someFunction(someVar); });
【解决方案2】:
click 回调函数将传递一个 jQuery 事件对象,而不是 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
}