我尝试使用.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();
}
});
答案 0 :(得分:2)
这有效,将其应用于您的代码
$(document).on("keydown", function(e){alert(e.keyCode);});
已应用于您的原始代码(也已将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;
}
});