Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法获得。依靠按键工作生活。。。有什么建议吗?_Javascript_Jquery_Delegates_Live - Fatal编程技术网

Javascript 无法获得。依靠按键工作生活。。。有什么建议吗?

Javascript 无法获得。依靠按键工作生活。。。有什么建议吗?,javascript,jquery,delegates,live,Javascript,Jquery,Delegates,Live,我试着用.on代替,但没有一个有效。代码在非活动时工作 有人能帮我一下吗?我通过ajax请求和qspholder类循环出一个列表,这段代码应该允许我使用箭头键选择并单击列表中的项目,然后输入。然而,由于某些原因,当我试图活生生地做这件事时,我似乎无法让它发挥作用。在提交和检索值之后,我将其放在带有.htmldata的div中。此代码不在加载源的页面上,而是在我加载到的页面上。有谁能给我一些建议,让我如何让这个工作?多谢各位 $(window).live("keydown", function(e

我试着用.on代替,但没有一个有效。代码在非活动时工作 有人能帮我一下吗?我通过ajax请求和qspholder类循环出一个列表,这段代码应该允许我使用箭头键选择并单击列表中的项目,然后输入。然而,由于某些原因,当我试图活生生地做这件事时,我似乎无法让它发挥作用。在提交和检索值之后,我将其放在带有.htmldata的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);});
应用于原始代码时,也更改了IF to开关


您使用的是哪个版本的jQuery?出于好奇,将键盘功能保留在live中有什么好处?我通常不会这样做,即使页面上有AJAX元素,它也可以正常工作。例如,如果删除/移动具有onclick的元素,事件将被删除,并且不会触发。使用.live时,即使元素被移动、替换等,均衡器也会继续使用。使用live的目的是什么?我希望,HTML文档不能有多个窗口/文档。!您只需使用$document.keydown函数{}???@Bharath我同意您的看法,这里没有使用.live,因为这是一个与文档而不是元素相连接的事件。
$(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;
    }
});