使用jQuery更改背景时,链接将丢失css背景颜色悬停属性
Links lose their css background-color hover attribute when changing background with jQuery
我有一个这样的菜单:
<ul id="menu">
<li><a href="#" id="test">test</a></li>
<li><a href="#" id="test2">test2</a></li>
</ul>
和css:
#menu li a:link {
background: transparent;
}
#menu li a:hover {
background-color: red;
}
在我的代码中的某个时刻,我需要使链接的背景再次透明,所以我制作了一个:
$("#menu > li > a:link").css("background","transparent");
这是有效的,但在那之后,我的问题是它似乎擦去了css悬停的背景色属性。事实上,当我再次悬停链接时,什么也没发生。如果这对我在#菜单lia:hover css中添加color:blue有帮助,那么当我悬停时,文本是蓝色的,但仍然没有背景色。
我找到了一种用jQuery进行悬停的方法,但我更喜欢用css进行悬停,因为在我看来这就是应该的方式。是虫子吗?有没有什么方法可以在不擦拭悬停css的情况下使背景透明?
提前感谢
诺希安
我也遇到了同样的问题,我的解决方案是创建两个独立的类,而不是更改jquery中的背景颜色。
a.default:hover { background-color: red; }
a.hovered:hover { background-color: transparent; }
$("#menu > li > a:link").removeClass("default");
$("#menu > li > a:link").addClass("hovered");
直接针对背景颜色,而不是简单的"背景":
#menu li a:link {
background-color: transparent;
}
$("#menu > li > a:link").css("background-color","transparent");
不,问题出在CSS和它被覆盖的事实上。更改:
a:hover {background-color: yellow; }
到此:
a:hover {background-color: yellow!important; }
然后它就会正常工作。
您可以执行"onmouseover"javascript悬停。
这只是CSS工作方式的副作用。:hover伪类必须在:link伪类之后声明。更改:链接将重置:悬停,所以你也需要重置你的:悬停。避免这种情况的一种方法是将更改颜色的CSS从初始设置移动到一个类中:
a:link {background-color: transparent; }
a:hover {background-color: yellow; }
a.myClass:link {background-color: cyan; }
然后
$("#menu > li > a:link").addClass("myClass");
以及后来的
$("#menu > li > a:link").removeClass("myClass");
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 浮动图像左作为背景-css
- JS幻灯片与CSS背景颜色变化
- 使用css()设置背景图像;不起作用
- 设置 CSS 背景在 Firefox 中不起作用
- jQuery-仅更改Y轴的CSS背景位置
- Javascript通过列表项的函数和css来更改背景颜色
- CSS动画背景图像的过渡越来越暗
- 在jquery中使用css获取背景值
- 在创建的Joomla模块中链接背景CSS图像
- 使用Javascript更改背景css
- 在打印预览对话框中,背景颜色或背景CSS设置不呈现
- AngularJS如何动画身体背景(CSS或JS)
- 文本块背景CSS
- 当JS改变页面高度时,Body背景CSS梯度不会重新绘制
- 如何将背景css添加到jQuery中
- 脚本改变背景css在多次点击
- 使用javascript更改浏览器调整大小的背景css
- iOS亚麻背景CSS
- 创建导航背景CSS