javascript - 使用箭头键时更改 jQuery 自动完成下拉菜单的背景颜色
问题描述
我在我的项目中使用jQuery Autocomplete,当我将鼠标悬停在建议项目上或使用向上/向下箭头键选择一个时,我希望建议项目的背景颜色为红色。
到目前为止,我的代码如下所示:
<input id="ajax" placeholder="Search by company name or ticker" autofocus method="GET" action="{% url 'index' %}" >
<script>
var availableTags = [
{% for stock in stocks %}
{ value: "/s/{{ stock.ticker|safe }}",
label: "{{ stock.ticker|safe }} - {{ stock.name|safe }}"
},
{% endfor %}
];
$(document).ready(function() {
$("input#ajax").autocomplete({
source: availableTags,
select: function( event, ui ) {
window.location.href = ui.item.value;
}
});
});
</script>
我可以使用以下代码编辑鼠标的背景颜色,但是当我使用箭头键进行选择时,它仍然默认为通用蓝色:
.ui-menu .ui-menu-item-wrapper {
color: #303030;
background-color: #fff;
}
.ui-menu .ui-menu-item-wrapper:hover {
color: #303030;
background-color: red;
border: #fff 1px solid;
}
我对 Javascript 有点陌生,并且是 jQuery 的绝对初学者,关于如何让背景颜色保持一致是否使用鼠标或箭头键进行选择有什么想法吗?谢谢
解决方案
改变这个:
.ui-menu .ui-menu-item-wrapper:hover {
color: #303030;
background-color: red;
border: #fff 1px solid;
}
对此:
.ui-menu .ui-menu-item-wrapper:hover, .ui-menu .ui-menu-item-wrapper.ui-state-active {
color: #303030;
background-color: red;
border: #fff 1px solid;
}
当你移动到一个自动完成项时,jQuery-UI 将.ui-state-active
类添加到div
内部li
(有.ui-menu-item-wrapper
类的那个),当你离开它时,它会再次删除该类。
作为一般规则,ui-state-active
当您通过键盘移入和移出项目时,jQuery-UI 使用这种技术来打开和关闭类。由于在某些情况下该项目不会“正式”获得焦点,因此:focus
伪类对于此目的并不完全可靠(实际上,它在这里不起作用)。
我明白你为什么找不到这个了。每次您尝试检查您按下箭头键的项目时,该项目都会失去焦点,因此您看不到它的状态!无论如何,ui-state-active
当您尝试在 jQuery-UI 中设置某种选定项的样式时,该类是需要注意的。
$(document).ready(function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
$("#tags").autocomplete({
source: availableTags
});
});
.ui-menu .ui-menu-item-wrapper {
color: #303030;
}
.ui-menu .ui-menu-item-wrapper:hover,
.ui-menu .ui-menu-item-wrapper.ui-state-active {
color: #303030;
background-color: red;
border: #fff 1px solid;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
推荐阅读
- html - React 按钮与带有道具的图像
- ruby-on-rails - 无法使用 devise-jwt 进行身份验证
- c - 在两个 STM32 芯片之间使用 DMA 传输的 SPI 导致结构中的数据重新排序
- javascript - 循环遍历数组并且只获取最后一项?
- c# - 元素未添加到列表 .NET Core
- amazon-web-services - EC2 Instance Connect 和 IAM 公钥
- jwt - JWT 令牌使用 Auth0 错过 Nuxt Auth 模块中的声明
- javascript - 序列化两个表之间的关联
- c# - MVC 提交按钮始终在 POST 上提交第一条记录详细信息
- list - 尝试创建另一个呼叫时出现问题?与一个值在列表中出现的次数有关的调用