我尝试使用.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/