javascript - 使用箭头键悬停

标签 javascript jquery css cross-browser

在我的元素中,我将 li 标签动态添加到 ul 元素,然后当焦点位于 textarea 元素上时,我尝试每当用户按下向下箭头键时,都会在第一个li元素上生成悬停效果。不知怎的,我的努力没有发挥作用。

到目前为止我尝试过的代码如下:

JS Fiddle

HTML

<textarea id="result" rows="4" cols="50"></textarea>
<ul class="autoComplete"></ul>

CSS

.autoComplete li {
    background-color:#E1E1E1;
    cursor: hand;
    cursor: pointer;
}
.autoComplete li:hover {
    background-color:#BDBDBD;
}

js

var result = $('#result');
var autoComplete = $('.autoComplete');
result.keydown(function (event) {
    if (event.keyCode == 40) {
        if (autoComplete.children('li').length > 0) {
            console.log('down');

            //should work with IE
            autoComplete.children(":first").focus().hover();
        }
    }
});

PS:解决方案应该是跨浏览器(IE8+)

最佳答案

尝试

CSS

.autoComplete li {
    background-color:#E1E1E1;
    cursor: hand;
    cursor: pointer;
}
.autoComplete li.hover {
    background-color:#BDBDBD;
}

JS

var result = $('#result');
var autoComplete = $('.autoComplete');
result.keyup(function (event) {
    console.log('keydown');
    if (event.keyCode == 40) {
        if (autoComplete.children('li').length > 0) {
            console.log('down');

            //should work with IE
            autoComplete.children(":first").mouseenter();
        }
    }
});

autoComplete.on('mouseenter', 'li', function(){
    $(this).addClass('hover');
}).on('mouseleave', 'li', function(){
    $(this).removeClass('hover');
});

演示:Fiddle

关于javascript - 使用箭头键悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120229/

相关文章:

html - react,js 组件渲染部分

javascript - 在 javascript 中将字符串 "009"解析为整数?

javascript - 使用单独的按钮在 JQUERY Mobile 中触发可折叠

javascript - 如何从 jquery 对话框中添加和删除表

javascript - 当用 contenteditable div 中的文本替换 HTML 时,有没有办法不失去焦点选择?

css - XSL 选择样式文本和 td

javascript - 使用节点、startOffset 和 endOffset 重建范围

javascript - ExtJS:在 ViewController 初始化之前触发字段更改事件

javascript - 当鼠标通过选项/使用 onmouseover 选择选项时选择标记事件

css - 只需几个步骤即可从网络打印