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/