2012-04-04 8 views
0

私は

。これは、それがあまりにも渡さ方法である。これは私のラッキー失敗推測..です

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

bindメソッドを介して特定のキーストロークを渡すするかどうかはわかりません

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

'$(document).bind( 'keyup'、keyup_handler);'を試しましたか?そして、私は 'e.keyCode'の代わりに' e.which'を勧めます。 – inhan

+0

Yahは、どのようなイベントまたはeが意味するのかわかりません。 – Trip

+0

e.keyCodeはなぜ優れていますか? – Trip

答えて

1

私はbind APIを誤解していると思います。あなたはすぐに​​を書くことでkeyup_handlerを呼び出す

  • :あなたのコードで

    は、あなたがundefinedkeyupにバインドするためのjQueryを言っています。それはundefinedを返します。これはjQuery bind呼び出しに渡されます。

  • 第2引数(event)も未定義です。

代わりに、

$(document).bind('keyup', keyup_handler); 
+0

それだけです。ありがとう! – Trip

0

は、私がここにあなたの第二の例を修正:

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

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

をあなたはbindを呼び出すと、あなたが内部的に呼び出すためにそれを機能を渡しています。 Bindはデフォルトでイベントオブジェクトを渡して関数を呼び出します。

あなたが試したコードは、keyup_handler()を実行して、結果をbindに渡していました。

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> 
関連する問題