JSFiddle - React, Tailwind, and code Playground
HTML
List 1:
<ul tabindex="0">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
CSS
li.selected {background:yellow}
JavaScript
var $liSelected;
var $ulSelected;
$(window).keydown(function(e) {
// Make sure we have a ul selected
if(e.which === 40) {
if($liSelected) {
$liSelected.removeClass('selected');
var $next = $liSelected.next();
if($next.length) {
$liSelected = $next.addClass('selected');
}
else {
$liSelected = $ulSelected.children('li').first().addClass('selected');
}
}
else {
$liSelected = $ulSelected.children('li').first().addClass('selected');
}
}else if(e.which === 38) {
if($liSelected) {
$liSelected.removeClass('selected');
var $prev = $liSelected.prev();
if($prev.length) {
$liSelected = $prev.addClass('selected');
}
else {
$liSelected = $ulSelected.children('li').last().addClass('selected');
}
}
else {
$liSelected = $ulSelected.children('li').last().addClass('selected');
}
}
});
$('ul').focus(function(e) {
$ulSelected = $(this);
$liSelected.removeClass('selected');
$liSelected = false;
});