给html添加类名的方法,DOM元素类名操作

类名操作是前端工程师编码过程中最频繁的操作之一,关于类名的操作基本可以总结为以下四种:

addClass: 为指定的dom元素添加样式

removeClass: 删除指定dom元素的样式

toggleClass: 如果存在(不存在),就删除(添加)一个样式

hasClass: 判断样式是否存在

jQuery

最简单的方式当然是直接引入万能的jQuery。

jQuery中有addClass(),removeClass(),toggleClass(),hasClass()四种方法,而且兼容性非常好。

原生JS

当然并不是所有人都喜欢使用jQuery的,并且在一些场景下引入jQuery并不是很合适。所以下面这种方法就使用原生JS来实现。

//hasClass()

function hasClass(obj, cls) {

return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));

}

//addClass()

function addClass(obj, cls) {

if (!this.hasClass(obj, cls)) obj.className += " " + cls;

}

//removeClass()

function removeClass(obj, cls) {

if (hasClass(obj, cls)) {

var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');

obj.className = obj.className.replace(reg, ' ');

}

}

//toggleClass()

function toggleClass(obj,cls){

if(hasClass(obj,cls)){

removeClass(obj, cls);

}else{

addClass(obj, cls);

}

}

轻量级脚本

如果你比较懒,不想手写的话,可以引入一个轻量级脚本——classie.js。

classie.js是一个非常强大的超级轻量级脚本,它允许您很容易添加、删除、切换,和检查DOM中的类。 classie.js 带给你简单的实用性, 不会让我们的脚本变得臃肿。毕竟它仅仅只有82行代码, 1.872 kb大小。

使用方法

classie.has( element, 'my-class' ) // returns true/false

classie.add( element, 'my-new-class' ) // add new class

classie.remove( element, 'my-unwanted-class' ) // remove class

classie.toggle( element, 'my-class' ) // toggle class

HTML5 classList

如果你点开classie.js的Github主页会发现该项目已经停止更新了,项目作者推荐大家使用全新的HTML5 API——classList。

FireFox浏览器和Chrome浏览器对classList的支持性都很好,至于IE浏览器,从IE10才开始支持。在手机端,需要Android 3+或 iOS Safari 5.1+。

以上四种方法在classList中对应的分别是:add(),remove(),toggle(),contains()。

除了这四个,还有:

length 属性,表示元素类名的个数,只读;

item() 支持一个参数,为类名的索引,返回对应的类名。

最佳方案

如果项目依赖jQuery的话,那就直接使用jQuery的相关方法。在其他情况下呢,推荐大家使用classie.js。

首先,非常轻量,仅仅只有82行代码, 1.872 kb大小。

其次,兼容性好,能做到classList做不到的。

最后,性能很好,如果看classie.js的源码会发现它是优先使用classList的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值