2011-06-21 80 views
4

当我有传递变量的回调函数

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

但我想有一个名为回调函数以正确的方式,我是palcing的正确传递someVar

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

回答

9

这两个例子都是错误的。

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

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

你需要传递函数表达式,从外部范围的参数调用的函数(使用闭合):

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

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 
}