首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从JavaScript禁用悬停规则

从JavaScript禁用悬停规则
EN

Stack Overflow用户
提问于 2018-07-24 05:53:55
回答 1查看 58关注 0票数 0

当某些JavaScript代码被触发时,我想禁用:hover规则。

我的css看起来像这样:

代码语言:javascript
复制
.headerfoldout a{
    background-color: red;
}
.headerfoldout a:hover{
    background-color: blue;
}

当这个JavaScript被触发时,我改变了headerfoldout的颜色,但我希望它保持相同的颜色,即使悬停时也是如此。

我用来设置css的JavaScript如下:

代码语言:javascript
复制
document.getElementById("headerfoldout").setAttribute("style", "background-color: green;");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 05:59:09

与使用JavaScript应用样式相比,使用CSS并使用Js中的类更安全:

代码语言:javascript
复制
.headerfoldout a {
    background-color: red;
}

.headerfoldout a:hover {
    background-color: blue;
}

.green.headerfoldout a, .green.headerfoldout a:hover {
    background-color: green;
}

而在Js中:

代码语言:javascript
复制
// without checking the classname
document.getElementById("headerfoldout").className += " green";

更安全的方法:

代码语言:javascript
复制
// checking the classname
var element, name, arr;
element = document.getElementById("headerfoldout");
name = "green";
arr = element.className.split(" ");
if (arr.indexOf(name) == -1) {
    element.className += " " + name;
}

注:我更喜欢className而不是classList,因为it will work in all browsers

编辑:

正如评论中提到的,classList可以用来简化代码:

代码语言:javascript
复制
 document.getElementById("headerfoldout").classList.add("green");

但要小心,IE9中不支持

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51487693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档