你可以做到这一点,使用 jQuery 的hover
:
$("selector_for_your_ul li").hover(
function() {
$(this).addClass("selected").siblings("li").removeClass("selected");
},
function() {
$(this).removeClass("selected");
}
);
活生生的例子
这会将“选定”类切换到li
鼠标所在的类,如果鼠标离开一个li
并且没有进入另一个,它将删除该类(它们都不会具有“选定”类)。我认为这就是您所说的您想要的,尽管这与让其中一个一开始就已经具有“选定”课程的情况不符。
如果您只想在有人将鼠标悬停在 an 上时更改它,li
但在鼠标离开 an而不进入另一个时不移除它,请使用:li
mouseenter
$("selector_for_your_ul li").mouseenter(
function() {
$(this).addClass("selected").siblings("li").removeClass("selected");
}
);
活生生的例子
如果您在各种参考资料中查找该mouseenter
事件,他们会告诉您它是特定于 IE 的。没错,但它非常有用,以至于 jQuery 在其他浏览器上模拟了它。
更新:如果您愿意,您可以将上述更改为siblings("li")
,siblings("li.selected")
例如:
$(this).addClass("selected").siblings("li.selected").removeClass("selected");
这可能会稍微提高效率(而不是试图从已经拥有的东西中删除一个类)。这是第一个示例(带有hover
)已更新以执行此操作;这是第二个示例(带有mouseenter
)已更新以执行此操作。
题外话:但是根据您想要的效果,您可以使用 CSS 而不是 jQuery 和“选定”类来实现它。如果您只想li
在鼠标实际悬停时突出显示(hover
上面的示例),而不是让最后一个li
突出显示(mouseenter
上面的示例),并且如果您不需要支持 IE6,则可以使用 CSS:hover
伪类来实现:
selector_for_your_ul li:hover {
color: red; /* ...or whatever... */
}
现场示例但同样,这仅在您想要悬停效果的情况下,并且仅在您不需要支持 IE6(仅允许:hover
在a
元素上)的情况下。