0

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
4

3 に答える 3

1

bindAPIを誤解している可能性があると思います。

あなたのコードでは、jQuery にバインドするように指示していundefinedますkeyup:

  • keyup_handlerと書くことですぐに起動できkeyup_handler(...)ます。これは、jQuery呼び出しundefinedに渡されるものです。bind
  • 2 番目の引数 ( event) も未定義です。

その代わり、

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

ここで2番目の例を修正しました:

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 に答える