classList介绍和原生JavaScript实现addClass、removeClass等

使用jQuery能够给元素很方便的添加class和删除class等操做,如今原生的JavaScript也能够实现这个方法了。使用classList能够方便的添加class、删除class、查询class等。javascript

语法:java

let elementClass = element.classList;

elementClasses 是一个 DOMTokenList 表示 element 的类属性 。若是类属性未设置或为空,那么 elementClasses.length 返回 0。element.classList 自己是只读的,虽然你能够使用 add() 和 remove() 方法修改它。git

方法:github

add( String [, String] )

添加指定的类值。若是这些类已经存在于元素的属性中,那么它们将被忽略。浏览器

remove( String [,String] )

删除指定的类值。测试

item ( Number )

按集合中的索引返回类值。this

toggle ( String [, force] )

当只有一个参数时:切换 class value; 即若是类存在,则删除它并返回false,若是不存在,则添加它并返回true。
当存在第二个参数时:若是第二个参数的计算结果为true,则添加指定的类值,若是计算结果为false,则删除它.net

contains( String )

检查元素的类属性中是否存在指定的类值。code

示例:对象

// div是具备class =“foo bar”的<div>元素的对象引用
div.classList.remove("foo");
div.classList.add("anotherclass");

// 若是visible被设置则删除它,不然添加它
div.classList.toggle("visible");

// 添加/删除 visible,取决于测试条件,i小于10
div.classList.toggle("visible", i < 10);

alert(div.classList.contains("foo"));

//添加或删除多个类
div.classList.add("foo","bar");
div.classList.remove("foo", "bar");

兼容性:

不兼容Android2.3和iOS4.2的,在移动端上想使用也是有点头疼啊。IE系列的更别说IE9和IE8了。因此目前来看,仍是没法在实际中放心的使用,只能用于某些特定的项目等。不过咱们能够经过一些shim来实现,或者最下方给出的原生javascript实现。

跨浏览器javascript shim

https://github.com/eligrey/cl...

原生JavaScript

相似于jQuery库的使用方式,使用className经过正则来添加或者删除class。
addClass、removeClass、toggleClass、hasClass

function hasClass(obj, cls) { 
 return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); 
} 
 
function addClass(obj, cls) { 
 if (!this.hasClass(obj, cls)) obj.className += " " + cls; 
} 
 
function removeClass(obj, cls) { 
 if (hasClass(obj, cls)) { 
 var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); 
 obj.className = obj.className.replace(reg, ' '); 
 } 
} 
 
function toggleClass(obj,cls){ 
 if(hasClass(obj,cls)){ 
 removeClass(obj, cls); 
 }else{ 
 addClass(obj, cls); 
 } 
}

参考连接:
https://blog.csdn.net/leadn/a...

相关文章
相关标签/搜索