Для вашей первой проблемы вы можете добавить проверку следующим образом -
...
else if (code === 40) { //Down arrow
if($("li.hovered").index()==$("li").length-1) return;
...
else if (code === 38) { //Up arrow
if($("li.hovered").index()==0) return;
...
Это означает, что когда вы находитесь в первом элементе index 0
, нажатие стрелки вверх ничего не изменит.
Кстати, 38 не стрелка вниз, а стрелка вверх.Не путай других. Я надеюсь, что вы можете выполнить проверку Дауна самостоятельно.
Вы можете решить проблему секунда , как показано ниже -
$("#userlist_container li").hover(function () {
$('li.hovered').removeClass('hovered');
$(this).addClass("hovered");
}, function () {
// $(this).removeClass("hovered");
});
И ваш третья проблему немного сложно объяснить без всего кода, поэтому проверьте мой обновленный код на http://jsfiddle.net/CyQ2w/7/
Вы должны блокировать события с e.preventDefault();