当应用鼠标悬停样式时,通过箭头键导航删除应用于列表项的选定类
Remove selected class applied to list item by arrow key navigation when mouse hover style is applied
当文本框中按上下箭头键时,所选的类应用于列表项。如果我将鼠标指针移动到列表项上并同时按上下箭头键,则悬停和所选类都应用于列表项。如何切换悬停和选择类类似于选择输入选项?
http://jsfiddle.net/AyAZx/790/$('#college').keyup(function(e) {
var $listItems = $('.field-wrap li');
var key = e.keyCode,
$selected = $listItems.filter('.selected'),
$current;
$listItems.removeClass('selected');
var menu = $('#college_list');
var height = $selected.outerHeight();
var top = menu.scrollTop();
var menuHeight = menu[0].scrollHeight;
if (key == 40) // Down key
{
if (!$selected.length || $selected.is(':last-child')) {
$current = $listItems.eq(0);
menu.scrollTop(0);
} else {
$current = $selected.next();
menu.scrollTop(top + height);
}
$current.addClass('selected');
}
if (key == 38) // Up key
{
if (!$selected.length || $selected.is(':first-child')) {
$current = $listItems.last();
menu.scrollTop(menuHeight + height);
} else {
$current = $selected.prev();
menu.scrollTop(top - height);
}
$current.addClass('selected');
}
});
.field-wrap ul {
width: 93%;
margin-top: 1px;
border: 1px solid #3498DB;
position: absolute;
z-index: 9;
background: white;
list-style: none;
max-height: 100px;
overflow-y: auto;
}
.field-wrap ul li {
padding: 2px;
border: solid grey;
border-width: 0 0 2px 0;
}
.field-wrap ul li:hover {
background: #2980B9;
}
<div class="field-wrap">
<input type="text" id="college" placeholder="Name" required autocomplete="off" />
<ul id="college_list">
<li>abc</li>
<li>def</li>
<li>asdff</li>
<li>dasdf</li>
<li>asdef</li>
<li>asdf</li>
<li>asf</li>
<li>asdef</li>
</ul>
</div>
恐怕在这种情况下,您将不得不将css:hover替换为mousemove事件:
$('#college_list li').mousemove(function() {
$('.field-wrap li').removeClass('selected');
$(this).addClass('selected');
});
相关文章:
- 将函数的上下文应用于javascript变量
- 将CSS应用于printWindow.print();在Javascript中
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- Javascript中的列表,用于添加和显示所有项目
- $scope.apply()何时应用于angular
- Javascript非常简单:'阅读更多''显示较少'应用于Wordpress的功能
- 尝试应用于<tr>在ng单击中
- 如何将javascript仅应用于1个表单中的2个表单提交按钮中的1个
- 将脚本应用于Angular 2上的输入
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 如何将参数应用于String.prototype.format函数
- 动态地将过滤器应用于 JSON.parse()
- $location更改不适用于ngchange,而是应用于ngclick
- 如何将 :empty 选择器应用于 XML 文档
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 如何使用 JavaScript 将样式应用于 CKEditor 中的选定文本
- MongoDB 无法将$addToSet应用于 Meteor JS 中的非数组
- 从新手到忍者主题的核心Javascript主题列表,用于构建插件和游戏
- 在JavaScript中查找两个JSON数组之间匹配的JSON项,并将CSS应用于UL列表中的匹配项
- 如何将表情符号应用于Angularjs指令列表