2012-04-04 11 views
0

Ich bin mir nicht sicher, wie die spezifische Tastendruck durch die bind-Methode übergeben ..

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

Das ist mein Glück versagt Vermutung ist ..

Mit dieser Methode ist es zu übergeben wird ..

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

Ein weiterer Fehler Variation:

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

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

Welche zurück:

e is not defined 
+3

Haben Sie '$ (document) .bind ('keyup', keyup_handler);'? Und ich empfehle 'e.which' anstelle von' e.keyCode'. – inhan

+0

Yah es weiß nicht, was Ereignis oder e bedeutet. – Trip

+0

Warum ist e.keyCode besser? – Trip

Antwort

1

glaube ich Ihnen die bind API falsch verstehen könnten.

mit Ihrem Code, doch sagen Sie jQuery zu binden undefined-keyup:

  • Sie sofort keyup_handler aufrufen, indem keyup_handler(...) zu schreiben. Es gibt undefined zurück, was an den Aufruf jQuery bind übergeben wird.
  • Das zweite Argument (event) ist ebenfalls undefiniert. Statt

,

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

Das war's. Vielen Dank! – Trip

0

ich Ihr zweites Beispiel hier festgelegt:

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

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

Wenn Sie anrufen bind, können Sie es mit einer Funktion sind vorbei intern anzurufen. Bind ruft die Funktion auf und übergibt ihr standardmäßig das Ereignisobjekt.

Der Code, den Sie ausprobiert haben, führte keyup_handler() aus und übergab die Ergebnisse an bind.

0

Versuchen Sie dies und Sie werden sehen.

<!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> 
Verwandte Themen