我尝试使用.on代替,并委托,它们都不起作用。 (代码不存在时有效)
有人可以帮我吗?我正在使用“ qspholder”类循环出一个列表(通过ajax请求),此代码应允许我使用箭头键选择并单击列表中的项目,然后输入。但是由于某种原因,当我尝试现场进行操作时,似乎无法使它正常工作。在提交和检索值之后,我将其(列表)与.html(data)放在div中。该代码不在正在加载的页面上,而是在我正在加载的页面上。谁能给我一些有关我如何工作的建议?谢谢。

$(window).live("keydown", function(e){
        var liSelected;
        var li = $('.qspholder');
        $('.qspholder').removeClass('selected');
        if(e.which === 40){
            if(liSelected){
                liSelected.removeClass('selected');
                next = liSelected.next();
                if(next.length > 0){
                    liSelected = next.addClass('selected');
                }else{
                    liSelected = li.eq(0).addClass('selected');
                }
            }else{
                liSelected = li.eq(0).addClass('selected');
            }
        }else if(e.which === 38){
            $('.qspholder').removeClass('selected');
            if(liSelected){
                liSelected.removeClass('selected');
                next = liSelected.prev();
                if(next.length > 0){
                    liSelected = next.addClass('selected');
                }else{
                    liSelected = li.last().addClass('selected');
                }
            }else{
                liSelected = li.last().addClass('selected');
            }
        } else if(e.which === 13) {
            liSelected.click();
        }
    });

最佳答案

这可行,将其应用于您的代码

$(document).on("keydown", function(e){alert(e.keyCode);});


http://jsfiddle.net/KBPb4/10/

应用于原始代码(也将IF更改为SWITCH

$(document).on("keydown", function (e) {
    var liSelected;
    var li = $('.qspholder');
    $('.qspholder').removeClass('selected');

    switch (e.keyCode) {
    case 40:
        if (liSelected) {
            liSelected.removeClass('selected');
            next = liSelected.next();
            if (next.length > 0) {
                liSelected = next.addClass('selected');
            } else {
                liSelected = li.eq(0).addClass('selected');
            }
        } else {
            liSelected = li.eq(0).addClass('selected');
        }
        break;
    case 38:
        $('.qspholder').removeClass('selected');
        if (liSelected) {
            liSelected.removeClass('selected');
            next = liSelected.prev();
            if (next.length > 0) {
                liSelected = next.addClass('selected');
            } else {
                liSelected = li.last().addClass('selected');
            }
        } else {
            liSelected = li.last().addClass('selected');
        }
        break;
    case 13:
        liSelected.click();
        break;
    }
});

关于javascript - 无法通过keydown工作。任何建议吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8907316/

10-17 03:01