0

我不确定如何通过绑定方法传递特定的击键..

$(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
4

3 回答 3

1

我想你可能会误解bindAPI。

使用您的代码,您是在告诉 jQuery 绑定undefinedkeyup

  • keyup_handler您立即通过编写调用keyup_handler(...)。它返回undefined,这是传递给 jQuerybind调用的内容。
  • 第二个参数 ( event) 也是未定义的。

反而,

$(document).bind('keyup', keyup_handler);
于 2012-04-04T16:27:33.563 回答
0

我在这里修复了您的第二个示例:

var keyup_handler = function(e){
  if (e.keyCode == 27) {
    close_lightbox();
    return false;       
  };
};

$(document).bind('keyup', keyup_handler);​

当您调用 时bind,您将传递给它一个内部调用的函数。Bind 将调用该函数,默认情况下将事件对象传递给它。

您尝试的代码正在运行 keyup_handler() 并将结果传递给bind.

于 2012-04-04T16:29:34.893 回答
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>
于 2012-04-04T16:30:00.007 回答