这是一个简单的听众:
$("#target").keypress(function(event) {
alert("test");
});
我想把单独的功能拿出去,但它不起作用:
$("#target").keypress(doAlert(event));
function doAlert(event)
{
alert("test");
}
我错过了什么?
答案 0 :(得分:2)
你想:
$("#target").keypress(doAlert);
你原来的:
$("#target").keypress(doAlert(event));
... 调用 doAlert
函数,并将其返回值传递给keypress
,就像任何其他函数调用一样。您希望keypress
引用给doAlert
函数,您不希望给它doAlert
的返回值。 (如果创建了doAlert
并返回了一个事件处理函数,那么你可以这样做,但这不是你写的。)
答案 1 :(得分:0)
它不起作用,因为doAlert(event)
您立即正在调用 该功能。记住在JS中,你通过在()
之后放置来调用函数,那就是你在那里做的那些不起作用,因为keypress
需要回调,在keypress
处理程序完成后运行。
所以,你应该:
$("#target").keypress(doAlert);