有人知道用jquery解决方案,用箭头键(向上,向下)浏览列表吗?
如果我有一个列表,例如,链接:
<a href="#">First Link</a>
<p>
<a href="#">Second Link</a>
<p>
<a href="#">Third Link</a>
<p>
<a href="#">Fourth Link</a>
<p>
如果用户看到他实际使用悬停效果导航的位置会很好:
a:hover{color:blue}
谢谢!要试验:http://jsfiddle.net/ZBn7r/1/
答案 0 :(得分:3)
通过焦点替换悬停。
然后,您可以使用jQuery将焦点移动到下一个和上一个链接:
$(document).keydown(
function(e)
{
if($('a:focus').length==0){$('a').first().focus();}
if (e.keyCode == 39) {
$("a:focus").next().focus();
}
if (e.keyCode == 37) {
$("a:focus").prev().focus();
}
}
);
更新了小提琴:http://jsfiddle.net/ZBn7r/2/
答案 1 :(得分:1)
HTML
<ul>
<li><a href="#">First Link</a></li>
<li> <a href="#">Second Link</a></li>
<li> <a href="#">Third Link</a></li>
</ul>
CSS
li.selected {background:yellow}
a:hover{color:blue}
a {
color:inherit;
text-decoration: none;
}
ul
{
list-style-type: none;
}
JS
var li = $('li');
var liSelected;
$(window).keydown(function(e){
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){
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');
}
}
});