你如何在$ .bind方法中传递击键事件?

时间:2012-04-04 16:20:58

标签: javascript jquery

我不确定如何通过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

3 个答案:

答案 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>