为什么不将您的 javascript 更改为以下内容 - 无需在removeClass()
函数中添加类:
switch (event.keyCode) {
case 38:
$("div.sseholdh").removeClass('sseholdh').next().addClass('sseholdh');
break; //...
default:
$("div.ssehold:eq(0)").addClass("sseholdh"); // does work
} // switch keycode
编辑:用于测试的基本 jsFiddle:http: //jsfiddle.net/greglockwood/wy9ZX/
编辑 2:这是一个更完整的版本,似乎可以使用实际站点上的标记来完成您尝试做的事情:
switch (event.keyCode) {
case 38:
// up arrow
var highlight = $("div.sseholdh");
// if nothing highlighted already, highlight the bottom entry
if (!highlight.length) {
$('div.ssehold:last').addClass('sseholdh');
} else {
// otherwise, change to the previous entry
highlight.removeClass('sseholdh').prevAll('.ssehold:first').addClass('sseholdh');
}
break;
case 40:
// down arrow
var highlight = $("div.sseholdh");
// if nothing highlighted, select the first entry
if (!highlight.length) {
$('div.ssehold:first').addClass('sseholdh');
} else {
// otherwise, move the highlight down
highlight.removeClass('sseholdh').nextAll('.ssehold:first').addClass('sseholdh');
}
break;
default:
// nothing here, I'm assuming you only want to move the highlight with the arrow keys
} // switch keycode
jsFiddle 在这里更新:http: //jsfiddle.net/greglockwood/wy9ZX/2/