2

我想使用向上/向下箭头键来选择搜索结果中的项目,

下一个链接不会集中但是,我做错了什么?

住在http://jsfiddle.net/JJDfL/1/

$('#hitbox').on('keyup','a', function(event) {
    //focus prev/next with arrows, enter and escape
    if (event.keyCode == 27) {
      $('#hitbox').slideUp(100);
      $('#searchbox').val('');
      $('#searchbox').focus();
    }
    if(event.keyCode == 40) {
      var focused = $(':focus');    
      focused.parent().next().focus();
      alert(focused.parent().next().html()); //returns '<a href="asdf">bb</a>'
    }
  });

更新:

现在工作:

 focused.parent().next().find('a').focus();

解决了这个问题。

http://jsfiddle.net/JJDfL/4/

4

1 回答 1

1

编辑:

有几个问题,但我编辑了你的小提琴,它应该适合你:http: //jsfiddle.net/JJDfL/6/

问题 1:当您按下时(一旦您选择了第一个链接),您没有选择正确的元素。通过以下方式修复:

$(this).parent().next().find("a").focus();

注意 .find("a") 选择 <p> 元素内的 <a> 元素,您也可以使用 children("a") 方法。

问题 2:您没有停止事件的传播,这也会使事件触发最近关注的项目,通过以下方式解决:

event.stopPropagation();

此外,如果您在函数完成后返回,您的查询变量似乎是不必要的。

于 2013-03-15T10:38:43.023 回答