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

时间:2011-06-21 13:14:29

标签: javascript jquery callback anonymous-function

当我有

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

但是我希望有一个命名的回调函数,我是否正确地接受了传递的someVar

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

3 个答案:

答案 0 :(得分:9)

你的两个例子都错了。

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

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

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

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

答案 1 :(得分:7)

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
}

答案 2 :(得分:0)

将参数作为事件数据传递给click事件(或使用jQuery的任何事件):http://api.jquery.com/click/