我刚刚学了一点jQuery,并尝试使用它来实现一个简单的颜色变化效果。假设我有两个<div
〉,#foo和#bar。#foo有很多URL,并定义了以下CSS:
#foo a {color: blue; border-bottom: 1px dashed blue}
#foo a:hover {color: black; border-bottom: 1px solid black}
现在我想在用户点击#bar时改变#foo中链接(a:link)的颜色,但保持a:hover的颜色不变,所以我这样写我的函数:
//...
$("#bar").click(function () {
$("#foo a").css("color", "red");
});
//...
问题是,虽然这个函数确实把所有链接都变成了红色,但a:hover的颜色丢失了,也就是说,当用户把光标移到链接上时,它们仍然是红色,而不是像我预期的那样变成黑色。
因为我看到jQuery所做的是将一个内联样式放在#foo中的<a
〉s中,使它们成为<a style="color:red;" href="..."
〉,我猜这将覆盖:hover伪类。由于伪类的内联样式属性还没有被任何人实现过,我怀疑我是否能得到我想要的效果...
还有,是否有任何解决方案不需要我编写类似
$("#foo a").hover(
function(){ $(this).css("color", "black");},
function(){ $(this).css("color", "blue");}
)
?
谢谢。
4条答案
按热度按时间jrcvhitl1#
摘自Setting CSS Pseudo Class Rules From Javascript
实际上,你可以在hover或者使用:after或者任何你想要的javascript伪类来改变一个类的值:
希望这对任何人都有帮助。
u0njafvf2#
!important似乎让css属性比内联样式更强大,至少在Firefox中是这样的。尝试将你的样式更改为如下所示:
unhi4e5o3#
也许您可以删除您在将鼠标悬停在链接上时添加的类,如下所示:
[EDIT]:您可能需要添加一个IF语句,以便首先查看类是否存在。
kqhtkvqz4#
另一种使用Javascript的讨厌方法是清空容器元素,然后用内容重新填充它,并重新设置单击事件。这会破坏所有状态和事件,因此必须重新设置它们,但对于不包含大量数据的简单对象,它可以工作!
我用这个导航菜单的使用:hover类。