首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JavaScript中添加/删除类?

如何在JavaScript中添加/删除类?
EN

Stack Overflow用户
提问于 2011-07-22 08:23:35
回答 13查看 105.5K关注 0票数 83

由于IE9和Safari-5不支持element.classList,那么跨浏览器的替代解决方案是什么?

请给我无框架

解决方案必须至少在IE9Safari 5、FireFox 4、Opera 11.5和Chrome中工作。

相关员额(但不包含解决方案):

  1. 如何添加和删除css类
  2. 使用动画添加和删除类
  3. 添加删除类?
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2014-11-30 13:32:10

在没有框架/库的情况下处理类的一种方法是使用属性Element.className,它“获取和设置指定元素的类属性的值”。(来自MDN文档)。

正如@mat fidemraizer在他的回答中提到的那样,一旦您获得了元素的类字符串,就可以使用任何与字符串关联的方法来修改它。

下面是一个例子:

假设您有一个ID为"myDiv“的div,并且希望在用户单击它时添加类"main__section”,

代码语言:javascript
复制
window.onload = init;

function init() {
  document.getElementById("myDiv").onclick = addMyClass;
}

function addMyClass() {
  var classString = this.className; // returns the string of all the classes for myDiv
  var newClass = classString.concat(" main__section"); // Adds the class "main__section" to the string (notice the leading space)
  this.className = newClass; // sets className to the new string
}
票数 16
EN

Stack Overflow用户

发布于 2015-02-05 12:42:53

以下是纯javascript解决方案中的addClass、removeClass、hasClass的解决方案。

实际上是http://jaketrent.com/post/addremove-classes-raw-javascript/寄来的

代码语言:javascript
复制
function hasClass(ele,cls) {
  return !!ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
  if (!hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
    var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
    ele.className=ele.className.replace(reg,' ');
  }
}
票数 66
EN

Stack Overflow用户

发布于 2016-03-10 16:13:27

看看这些单身汉:

  1. 删除类: Element.classList.remove(“隐藏”);
  2. 切换类(如果类尚未出现,则添加类;如果存在,则将其移除) Element.classList.toggle(“隐藏”);

就这样!我做了一个测试- 10000次迭代。0.8s

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

https://stackoverflow.com/questions/6787383

复制
相关文章

相似问题

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