Не могу получить .live при работе на клавиатуре ... какие-нибудь предложения? - PullRequest
1 голос
/ 18 января 2012

Я попытался использовать вместо этого .on и делегировать, ни один из них не работал. (код работает, когда не живут) Кто-нибудь может мне здесь помочь? Я зацикливаю список (с помощью ajax-запроса) с классом «qspholder», и этот код должен позволять мне выбирать и выбирать элементы в списке с помощью клавиш со стрелками и вводить. И все же по какой-то причине я просто не могу заставить это работать, когда пытаюсь сделать это как вживую. Я положил его (список) в div с .html (данные) после отправки и получения значений. Этот код находится не на той странице, с которой он загружается, а на той странице, на которую я его загружаю. Кто-нибудь может дать мне несколько советов о том, как мне это работает? Спасибо.

$(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 Ответ

2 голосов
/ 18 января 2012

это работает, примените его к вашему коду

$(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;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...