JQuery 自动完成:无法在焦点项目上应用样式
JQuery Autocomplete : can't apply style on the focused item
我有一个像这样的简单输入
<input id="name-srch" type="text" data-type="string">
还有我的 js(简体)
$('#name-srch').autocomplete({
source: function (request, response) {
$.ajax({
url: ...,
data: ...,
success: function (data) {
// note that 'data' is the list of elements to display
response(data)
}
});
},
select: function (event, ui) {
// do some stuff
return false
},
focus: function (event, ui) {
console.log(ui.item.Name) // just to see if the focus event is triggered, and it is
return false
}
})
.autocomplete("instance")._renderItem = function (ul, item) {
return $("<li>")
.append("<a>" + item.Name + "</a>")
.appendTo(ul);
};
JQuery 自动完成用 <li>s
填充 <ul>
,并在鼠标悬停或 down/up 方向键时触发焦点事件。
问题是我想将特定样式应用于重点项目,所以在我的 CSS 中有类似的东西
.ui-state-focus {
background-color: red;
font-weight: bold;
}
这是我的问题,焦点项目从不采用 ui-state-focus
class,因此它从不采用定义的样式。
我做错了什么:(?
编辑: 我已经尝试在我的 CSS 中添加类似
的内容
.ui-menu-item:hover {
background-color: red;
font-weight: bold;
}
确实,它可以实现悬停,但不能实现 down/up 箭头键的焦点。而且,我不是很喜欢它,如果可以的话,我宁愿让它按照它本来的方式工作......
也许换肤的另一种方法是在 javascript 的 li 中添加一个 class 然后添加类似这样的内容
.li-hover:hover {
background-color: red;
font-weight: bold;
}
可能会成功,我猜是因为你设置了不同的渲染器 jquery 自动完成不会为你做悬停。
试试这个选择器:
.ui-menu .ui-menu-item:hover, .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus {
background-color: red;
font-weight: bold;
}
我回答的另一个问题中有一个 JSFIDDLE。只需检查 CSS 定义中的最后一行:
https://jsfiddle.net/g4bvs0we/5/
更新:我已经更新了源代码和jsfiddle link。我想 CSS 规则优先级存在问题,放置更具体的规则应该会有所帮助。
你能告诉我这是否有效吗?
我成功了。
出于某种原因 JQuery 自动完成不会在焦点 <li>
上应用 ui-state-focus
,但会在 [=] 上应用 ui-state-active
class 14=] 里面 重点<li>
。因此我可以通过
应用想要的样式
.ui-state-active {
background-color: red;
font-weight: bold;
}
我仍然不知道为什么它只在 <a>
内部应用 class 而不是在所有文档中描述的 <li>
上应用,但是嘿,它有效.. .
我使用以下方法解决了这个问题:
.ui-autocomplete {
.ui-state-focus {
border: 0px !important;
background: #yourcolour !important;
color: #yourcolour !important;
}
}
我有一个像这样的简单输入
<input id="name-srch" type="text" data-type="string">
还有我的 js(简体)
$('#name-srch').autocomplete({
source: function (request, response) {
$.ajax({
url: ...,
data: ...,
success: function (data) {
// note that 'data' is the list of elements to display
response(data)
}
});
},
select: function (event, ui) {
// do some stuff
return false
},
focus: function (event, ui) {
console.log(ui.item.Name) // just to see if the focus event is triggered, and it is
return false
}
})
.autocomplete("instance")._renderItem = function (ul, item) {
return $("<li>")
.append("<a>" + item.Name + "</a>")
.appendTo(ul);
};
JQuery 自动完成用 <li>s
填充 <ul>
,并在鼠标悬停或 down/up 方向键时触发焦点事件。
问题是我想将特定样式应用于重点项目,所以在我的 CSS 中有类似的东西
.ui-state-focus {
background-color: red;
font-weight: bold;
}
这是我的问题,焦点项目从不采用 ui-state-focus
class,因此它从不采用定义的样式。
我做错了什么:(?
编辑: 我已经尝试在我的 CSS 中添加类似
的内容.ui-menu-item:hover {
background-color: red;
font-weight: bold;
}
确实,它可以实现悬停,但不能实现 down/up 箭头键的焦点。而且,我不是很喜欢它,如果可以的话,我宁愿让它按照它本来的方式工作......
也许换肤的另一种方法是在 javascript 的 li 中添加一个 class 然后添加类似这样的内容
.li-hover:hover {
background-color: red;
font-weight: bold;
}
可能会成功,我猜是因为你设置了不同的渲染器 jquery 自动完成不会为你做悬停。
试试这个选择器:
.ui-menu .ui-menu-item:hover, .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus {
background-color: red;
font-weight: bold;
}
我回答的另一个问题中有一个 JSFIDDLE。只需检查 CSS 定义中的最后一行:
https://jsfiddle.net/g4bvs0we/5/
更新:我已经更新了源代码和jsfiddle link。我想 CSS 规则优先级存在问题,放置更具体的规则应该会有所帮助。
你能告诉我这是否有效吗?
我成功了。
出于某种原因 JQuery 自动完成不会在焦点 <li>
上应用 ui-state-focus
,但会在 [=] 上应用 ui-state-active
class 14=] 里面 重点<li>
。因此我可以通过
.ui-state-active {
background-color: red;
font-weight: bold;
}
我仍然不知道为什么它只在 <a>
内部应用 class 而不是在所有文档中描述的 <li>
上应用,但是嘿,它有效.. .
我使用以下方法解决了这个问题:
.ui-autocomplete {
.ui-state-focus {
border: 0px !important;
background: #yourcolour !important;
color: #yourcolour !important;
}
}