Jquery箭头键导航

luc*_*uca 7 navigation jquery key

我有像自动提示这样的Facebook的文本字段和下拉菜单:

<input type="text" id="search" name="search_fld"/>

<div id="display">
<div class="display_box">Luca</div>
<div class="display_box">David</div>
<div class="display_box">Mark</div>
<div class="display_box">...</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我的CSS:

.display_box:hover
{
  background:#3b5998;
  color:#FFFFFF;
}
Run Code Online (Sandbox Code Playgroud)

如何通过向下箭头键将"悬停"状态从我的输入"search_fld"传递到第一个"display_box",依此类推所有"display"div?

这是jsfiddle代码链接.

Sha*_*ard 9

您无法完美地模拟悬停状态..添加具有相同样式的"真实"类是无法逃脱的:

.display_box_hover, .display_box:hover
{
  background:#3b5998;
  color:#FFFFFF;
}
Run Code Online (Sandbox Code Playgroud)

现在这段代码将"导航"元素:

window.displayBoxIndex = -1;

$("#search").keyup(function(e) 
{
        if (e.keyCode == 40) 
        {  
            Navigate(1);
        }
        if(e.keyCode==38)
        {
            Navigate(-1);
        }

});

var Navigate = function(diff) {
    displayBoxIndex += diff;
    var oBoxCollection = $(".display_box");
    if (displayBoxIndex >= oBoxCollection.length)
         displayBoxIndex = 0;
    if (displayBoxIndex < 0)
         displayBoxIndex = oBoxCollection.length - 1;
    var cssClass = "display_box_hover";
    oBoxCollection.removeClass(cssClass).eq(displayBoxIndex).addClass(cssClass);
}
Run Code Online (Sandbox Code Playgroud)

这将"记住"最后一个"selected"元素的索引并切换到next或previous元素,使用该eq()函数并将上面的类添加到所选元素.

更新了jsFiddle.