jquerykeypress是否遍历每个循环?

jquerykeypress是否遍历每个循环?,jquery,keyboard,navigation,Jquery,Keyboard,Navigation,嘿,伙计们, 可能是一个简单的问题,但是在网上找不到任何东西 我有一个带有搜索结果的列表,我希望能够使用上下键在列表中导航 if (e.keyCode == 40) { //down //alert('down'); $('#searchresults ul li').each(function() { }); } if (e.keyCode == 38) { //up //alert('up');

嘿,伙计们, 可能是一个简单的问题,但是在网上找不到任何东西

我有一个带有搜索结果的列表,我希望能够使用上下键在列表中导航

    if (e.keyCode == 40) { //down
        //alert('down');
        $('#searchresults ul li').each(function() { 

        });
    }

    if (e.keyCode == 38) { //up
        //alert('up');
    }

    if (e.keyCode == 13) { //enter
        //alert('enter');
    }
搜索结果如下所示:

<ul>
    <li class="matched"><a href="link1">link1</a></li>
    <li class="matched"><a href="link2">link2</a></li>
    <li class="matched"><a href="link3">link3</a></li>
</ul>

不起作用,因为索引方法有问题。但是,每次arrowkeydown触发器上的pressedCount变量都会增加。

我不确定我是否真的喜欢接管用户箭头键的想法,尤其是当我们生活在一个很多键盘(笔记本)上不再出现上下翻页的世界中时。有很多用户使用箭头进行滚动

如果在结果上设置了键盘导航,只需将焦点设置在第一个链接上,Tab将向下,Shift+Tab将向上

所有这些功能都已内置,您只需将焦点设置在第一个元素上


$('first_element_selector').focus()

类似的东西应该可以工作

if (e.keyCode == 40) { //down
    $('#searchresults ul li').each(function() { 
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $(this).next().addClass('selected');
            // use $(this).prev() for UP case
        }
    });
}
请注意,如果未选择任何项,则需要使用“选定”css类预加载列表,或添加一些代码以将选定项应用于列表中的第一项

此外,您还需要代码来检查您是否在列表中的最后一项,在这种情况下,您将不想调用.next()

jquerynext

jqueryprev

jQuery类

jQuery removeClass 工作演示:


(你必须先点击页面,才能聚焦IFRAME。)

只想指出:没有简单的问题,只有理解与否的状态。此网站用于第二个案例的状态。:)
if (e.keyCode == 40) { //down
    $('#searchresults ul li').each(function() { 
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $(this).next().addClass('selected');
            // use $(this).prev() for UP case
        }
    });
}