jquery委托keyup无法正常工作

时间:2014-03-22 10:53:39

标签: javascript jquery delegation

我正在创建一个附加在文档上的幻灯片。我隐藏了身体并将幻灯片放在身体元素之外。我不想在退出按钮上关闭幻灯片。

页面结构如下:

<html style="height: 100%;">
    <body style="display: none;"></body>
    <div class="slideshow"></div>
</html>

我尝试过这样的事情:

$(document).on('keyup', '.slideshow', function( e ){
alert("Here");
    if (e.keyCode == 27) {
        alert("Escape");
    };
});

如果我将keyup更改为click,则它可以显示警告Here,但它不会委派密钥。忽略esc警报,如果我在它也没有显示之前添加警报,那么问题不在转义键代码中。

2 个答案:

答案 0 :(得分:1)

据我所知,你不能这样做。这是因为document无法确定keyup事件是否从slideshow触发,除非幻灯片显示包含任何输入字段并且您输入内容。

答案 1 :(得分:0)

您可以使用'input'标签替换div,它会为您提供一个输入框,因此当您输入内容时,将触发警报。

<body style="display: block;">
    <input class="slideshow"/>
</body>

$(document).ready(function () {
    $('.slideshow').keyup(function (e) {
        alert("Here");
        if (e.keyCode == 27) {
            alert("Escape");
        };
    });
});

JSFiddle