我不确定如何通过bind方法传递特定的击键..
$(document).bind('keyup', event, keyup_handler(event));
这是我的幸运失败猜测..
这也是它传递的方法..
var keyup_handler = function(e){
if (e.keyCode == 27) {
close_lightbox();
return false;
};
};
另一个失败的变化:
var keyup_handler = function(e){
if (e.keyCode == 27) {
close_lightbox();
return false;
};
};
$(document).bind('keyup', keyup_handler(e));
返回:
e is not defined
答案 0 :(得分:1)
我认为您可能会误解bind
API。
使用您的代码,您告诉jQuery将undefined
绑定到keyup
:
keyup_handler
立即调用keyup_handler(...)
。它返回undefined
,这是传递给jQuery bind
调用的内容。event
)也未定义。相反,
$(document).bind('keyup', keyup_handler);
答案 1 :(得分:0)
我在这里修复了你的第二个例子:
var keyup_handler = function(e){
if (e.keyCode == 27) {
close_lightbox();
return false;
};
};
$(document).bind('keyup', keyup_handler);
当您致电bind
时,您正在向其传递一个内部呼叫功能。绑定将调用该函数,默认情况下将其传递给事件对象。
您尝试的代码是运行keyup_handler()并将结果传递给bind
。
答案 2 :(得分:0)
试试这个,你会看到。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<title>jQuery Keyup Example</title>
<script type="text/javascript">
var keyup_handler = function(e) {
if (e.which == 27) {
alert('ESCAPE');
return false;
}
}
$(document).ready(function() {
$(document).bind('keyup',keyup_handler);
});
</script>
</head>
<body>Press the escape key.
</body>
</html>