无法得到.live在keydown工作......任何建议?

时间:2012-01-18 08:43:51

标签: javascript jquery delegates live

我尝试使用.on代替,委托,但没有一个工作。 (代码在不活时工作) 任何人都可以帮我一把吗?我正在使用“qspholder”类循环一个列表(通过ajax请求),这段代码应该允许我使用箭头键选择并单击列表中的项目并输入。然而出于某种原因,当我尝试将其作为现场时,我似乎无法使其工作。在提交和检索值之后,我将它(列表)放在带有.html(数据)的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();
        }
    });

1 个答案:

答案 0 :(得分:2)

这有效,将其应用于您的代码

$(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;
    }
});