原生js实现addClass,removeClass,hasClass方法
2017-12-15 13:05
706 查看
1.hasClass()
2.removeClass()
3.addClass()
4.html5样式–classList
其实html5已经扩展了class操作的相关API,其中classList属性就以及实现了class的增删和判断。
classList属性的方法有:
add(value) 添加类名,如果有则不添加
contains(value) 判断是否存在类名,返回Boolean值
remove(value) 从列表中删除类名
toggle(value) 切换类名:如果列表中存在则删除,否则添加
利用classList属性检测代码
可见其直接暴露的API有:
length:表示元素类名的个数,只读
item() :支持一个参数,为类名的索引,返回对应的类名
但是add() contains()等函数,一次只能添加或修改一个类名,不过我们可以通过修改原型函数实现可以添加、删除或修改多个类名的方法。
关于该方法的具体介绍可点击链接查看。
目前支持classList属性的浏览器有FireFox 3.6+和Chrome。因此为了更好的兼容性,我们可以自己手动实现这几个方法。
//判断某个类是否存在 function hasClass(element, value) { var cls = value || ''; //\s 匹配任何空白字符,包括空格、制表符、换页符等等 if (cls.replace(/\s/g, '').length == 0) { return false; //当没有参数返回时,返回false } return new RegExp(' ' + cls + ' ').test(' ' + element.className + ' '); }
2.removeClass()
function removeClass(element, value) { if (hasClass(element, value)) { //\t 匹配一个制表符;\r 匹配一个回车符;\n 匹配一个换行符 var newClass = ' ' + element.className.replace(/\t\r\n/g, '') + ' '; while (newClass.indexOf(' '+ value + ' ') > -1) { newClass = newClass.replace(' ' + value + ' ', ' '); } element.className = newClass.replace(/^\s+|\s+$/g,''); } }
3.addClass()
//该方法可独立存在 function addClass(element, value) { //类名为空时,直接添加该类 if (!element.className || element.className == "") { element.className = value; return; } //类名不为空时,先判断该类名是否已经存在,若不存在,则添加该类名 var cls = ' ' + value + ' '; if (cls.indexOf(' ' + element.className + ' ') <= -1) { var newClass = element.className; newClass += ' '; newClass += value; element.className = newClass; } } //该方法在hasClass()函数已存在的基础上,添加类 function addClass(element, value) { if (!hasClass(element, value)) { element.className = element.className == '' ? value : element.className + ' ' + value; } }
4.html5样式–classList
其实html5已经扩展了class操作的相关API,其中classList属性就以及实现了class的增删和判断。
classList属性的方法有:
add(value) 添加类名,如果有则不添加
contains(value) 判断是否存在类名,返回Boolean值
remove(value) 从列表中删除类名
toggle(value) 切换类名:如果列表中存在则删除,否则添加
<body class="test1 test2 test3 test4"></body>
利用classList属性检测代码
var bodyer = document.getElementsByTagName('body')[0]; console.log(bodyer.classList);
可见其直接暴露的API有:
length:表示元素类名的个数,只读
item() :支持一个参数,为类名的索引,返回对应的类名
document.body.classList.item(3); //输出test4
但是add() contains()等函数,一次只能添加或修改一个类名,不过我们可以通过修改原型函数实现可以添加、删除或修改多个类名的方法。
关于该方法的具体介绍可点击链接查看。
目前支持classList属性的浏览器有FireFox 3.6+和Chrome。因此为了更好的兼容性,我们可以自己手动实现这几个方法。
相关文章推荐
- 原生js实现addClass,removeClass,hasClass方法
- 用原生js实现addClass,removeClass,hasClass方法
- 原生js实现addClass,removeClass,hasClass方法
- html5的classList属性介绍和原生js实现jQuery的addClass,removeClass,hasClass方法
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- 仿jQuery原生js实现----hasClass,removeClass,addClass
- 原生JS实现hasClass,addClass,removeClass
- 使用JS实现jQuery的addClass, removeClass, hasClass函数功能
- 常用的js自定义方法 -- hasClass addClass removeClass getElementsByClass
- 原生JavaScript实现hasClass、addClass、removeClass、toggleClass
- 原生js实现addClass、removeClass、toggleClass
- 超有用!原生JS实现增加删除class(addClass,removeClass,toggleClass)
- 原生JS实现addClass,removeClass,toggleClass
- js实现addClass,removeClass,hasClass
- js实现addClass,removeClass,hasClass的函数代码
- 原生JS实现hasClass,addClass,removeClass
- 原生js实现addclass,removeclass,toggleclasss实例
- 原生javascript实现addClass,removeClass,hasClass函数
- 原生JS实现addClass,removeClass,toggleClass