将带参数的函数传递给事件处理程序

Rom*_*eev 1 javascript jquery

假设我有以下代码:

$('#from').focus(listExpand(1));
$('#to').focus(listExpand(3));
Run Code Online (Sandbox Code Playgroud)

它没有像我预期的那样工作.我认为它是错误的,因为我传递的是函数结果而不是函数本身.

所以正确的语法是:

$('#from').focus(listExpand); // no brackets and no parameters
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我无法将任何参数传递给函数:(

我该如何实现这个主题?

A P*_*aul 5

下面会工作.用这个.

$('#from').focus(function() {listExpand(1) });
$('#to').focus(function(){listExpand(3);})
Run Code Online (Sandbox Code Playgroud)

@sudher也提到了其他很酷的方式.您可以在http://jsfiddle.net/kvHDA/查看它的工作情况

示例代码

$('#from').focus({x: 1},myfunc);

function myfunc( e){
     alert(e.data.x);
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*ton 5

将调用包装listExpand在单独的函数定义中:

$('#from').focus(function(){ listExpand(1); });
$('#to').focus(function(){ listExpand(3); })
Run Code Online (Sandbox Code Playgroud)