身上的keydown?

ajs*_*sie 4 javascript jquery

每当我按一下键,我都会收到提醒.

我试过了:

$('body').live('keyup', function() {
     alert('testing');
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用,是不是因为选择器?

更新:

这是我的代码:

<!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"/>
        <title>TODO supply a title</title>
        <script type="text/javascript" src="../system/media/js/jquery/jquery.js"></script>
        <script type="text/javascript">  
            $(document).ready(function() {
                $('body').live('keyup', function() {
                    alert('testing');
                });   
            });   
        </script>
    </head>
    <body>
        <p>
            TODO write content
        </p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

它不提醒我,当我按的东西,虽然它的工作原理,当我更换keyup使用mouseover过和鼠标TODO write content

为什么不起作用?

Bry*_*ews 8

尝试使用$("html")$("*")代替$("body").为了使keyUp身体上的事件发射,必须集中身体节点或其中一个孩子.您可以在示例中通过添加文本输入并将鼠标聚焦到该输入来完成此操作.你真正想要的是捕获任何按键,所以$("html")应该工作.

编辑:我认为您的示例可能有效,但无论如何,要有条件地运行逻辑,您可以尝试这样做:

if ($(document.body).is(".focusOnKeypress")) {
   $("html").live(...);
}
Run Code Online (Sandbox Code Playgroud)

或者,我认为这也有效:

$("body:not(.noFocusOnKeypress)").parent("html").live(...);
Run Code Online (Sandbox Code Playgroud)


小智 5

只是听窗户!

$(window).keydown(function(event){
    alert(event.keyCode);
});
Run Code Online (Sandbox Code Playgroud)

  • 这在IE8或更低版本中不起作用。http://www.quirksmode.org/dom/events/keys.html (2认同)