我在我的一个非常古老的项目中使用AJAX control toolkits autocomplete。鼠标悬停突出显示有问题。
在有效的示例中,生成的<li>
标记会获得一个鼠标悬停事件,该事件使用内联css更改其背景颜色。效果很好。但是,当我更改标记时:
<li>
Hello world
</li>
到
<li>
<div>Hello</div>
<div>world</div>
</li>
当我悬停其中一个div未覆盖的部分时,<li>
元素只会改变背景颜色。
由于我无法修改生成的(和缩小的)javasacript,我正在寻找快速而肮脏的修复。
我试图更改元素的z-index,但没有成功。我也试图找到li的事件并将其添加到div中。但我找不到将jquery未添加的事件复制到另一个元素的方法。
这里的任何想法都非常感谢。
下面如果恢复缩小的javascript,如果它有任何帮助:
_highlightItem: function(item) {
/// <summary>
/// Highlights the specified item
/// </summary>
/// <param name="item" type="Sys.UI.DomElement" DomElement="true" mayBeNull="false" />
/// <returns />
var children = this._completionListElement.childNodes;
// Unselect any previously highlighted item
for (var i = 0; i < children.length; i++) {
var child = children[i];
if (child._highlighted) {
if (this._completionListItemCssClass) {
Sys.UI.DomElement.removeCssClass(child, this._highlightedItemCssClass);
Sys.UI.DomElement.addCssClass(child, this._completionListItemCssClass);
} else {
if (Sys.Browser.agent === Sys.Browser.Safari) {
child.style.backgroundColor = 'white';
child.style.color = 'black';
} else {
child.style.backgroundColor = this._textBackground;
child.style.color = this._textColor;
}
}
this.raiseItemOut(new AjaxControlToolkit.AutoCompleteItemEventArgs(child, child.firstChild.nodeValue, child._value));
}
}
// Highlight the new item
if(this._highlightedItemCssClass) {
Sys.UI.DomElement.removeCssClass(item, this._completionListItemCssClass);
Sys.UI.DomElement.addCssClass(item, this._highlightedItemCssClass);
} else {
if (Sys.Browser.agent === Sys.Browser.Safari) {
item.style.backgroundColor = 'lemonchiffon';
} else {
item.style.backgroundColor = 'highlight';
item.style.color = 'highlighttext';
}
}
item._highlighted = true;
this.raiseItemOver(new AjaxControlToolkit.AutoCompleteItemEventArgs(item, item.firstChild.nodeValue, item._value));
},
答案 0 :(得分:4)
为什么不使用CSS添加所需的高光?
li > div:hover {
/* Highlight Rule Here */
}