我可以通过JavaScript禁用CSS:hover效果吗?

我试图阻止浏览器:hover通过JavaScript 使用CSS 的效果。


我在CSS中设置了a和a:hover样式,因为如果JS不可用,我希望获得悬浮效果。但是,如果有可用的JS ,我想用更平滑的效果覆盖CSS悬停效果(例如,使用jQuery color插件)。


我尝试了这个:


$("ul#mainFilter a").hover(

     function(e){ e.preventDefault(); ...do my stuff... }, 

     function(e){ e.preventDefault(); ...do my stuff... });

我也尝试过使用return false;,但是它不起作用。


这是我的问题的一个示例:http : //jsfiddle.net/4rEzz/。链接应该淡出而不会变灰。


如fudgey所述,一种解决方法是使用重置悬浮样式,.css()但是我必须覆盖CSS中指定的每个属性(请参见http://jsfiddle.net/raPeX/1/)。我正在寻找一个通用的解决方案。


有谁知道如何做到这一点?


PS:我不想覆盖为悬停设置的所有样式。


四季花海
浏览 4501回答 3
3回答

莫回无

恐怕没有纯粹的JavaScript通用解决方案。JavaScript无法关闭CSS :hover状态本身。您可以尝试以下替代解决方法。如果您不介意在HTML和CSS中多花钱,那么您不必通过JavaScript手动重置每个CSS属性。的HTML<body class="nojQuery">的CSS/* Limit the hover styles in your CSS so that they only apply when the nojQuery&nbsp;class is present */body.nojQuery ul#mainFilter a:hover {&nbsp; &nbsp; /* CSS-only hover styles go here */}的JavaScript// When jQuery kicks in, remove the nojQuery class from the <body> element, thus// making the CSS hover styles disappear.$(function(){}&nbsp; &nbsp; $('body').removeClass('nojQuery');)

qq_花开花谢_0

使用仅分配了悬停的第二类:的HTML&nbsp;<a class="myclass myclass_hover" href="#">My anchor</a>的CSS&nbsp;.myclass {&nbsp;&nbsp; &nbsp;/* all anchor styles */&nbsp;}&nbsp;.myclass_hover:hover {&nbsp; &nbsp;/* example color */&nbsp; &nbsp;color:#00A;&nbsp;}现在,您可以使用Jquery删除该类,例如,如果元素已被单击:JQUERY&nbsp;$('.myclass').click( function(e) {&nbsp; &nbsp; e.preventDefault();&nbsp; &nbsp; $(this).removeClass('myclass_hover');&nbsp;});希望这个答案有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP