JS原生addClass、removeClass实现
来源:互联网 发布:mac cad格式问题 编辑:程序博客网 时间:2024/06/03 00:37
用jQuery的addClass()、removeClass()时手痒,想了解下原生JavaScript是怎么实现的这类功能。
方法一:还是用到了其他函数辅助,所以看着简短些。
function addClass(ele,addname){ if(!ele.className){ // class非空的时候,再判断要添加的类目是不是已经存在 ele.className = addname; //class名为空的时候,直接赋值 }else{ //非空 if(!isHasClassName(addname,ele.className.split(" "))){ //不存在要添加的class名 ele.className += " " + addname; } } function isHasClassName(target,arr){ for(var i in arr){ if(target === arr[i]){ return true; } } } }function removeClass(ele,classname){ ele.className = ele.className.replace(classname,""); }
思路:采用replace()的替换功能实现删除.
关于replace()详细参见http://www.w3school.com.cn/jsref/jsref_replace.asp
方法二:利用基础JavaScript,不采用其他函数实现
//为元素添加新classname function addClassName(ele,classname){ //判断以前是否为有class if(!ele.className){ ele.className = classname; }else{ newclassname = ele.className; newclassname += " "; newclassname += classname; ele.className = newclassname; } } //原生JavaScript不使用其他内部封装好的函数比较难以实现删除class,以下方法不适用于直接删除在行内设置了class的情况.一般在做鼠标事件时通过JS添加的class,可以通过数组,先把行内class储存在数组,然后需要时,在用这个储存好的数组在需要的时候更新.
var arrClassName=[]; //初始化其他兄弟元素的classname function updateClassName(ele){ for(var i = 1;i < ele.parentNode.childNodes.length;i += 4){ ele.parentNode.childNodes[i].className = arrClassName[i]; } }
1 0
- JS原生addClass、removeClass实现
- 原生JS实现addClass,removeClass,toggleClass
- 原生JS实现addClass,removeClass,toggleClass
- 原生js实现addClass、removeClass、toggleClass
- 原生js 实现addclass和removeclass
- 原生JS实现addClass,removeClass,toggleClass
- 原生js实现addClass,removeClass,hasClass方法
- 原生JS addClass removeClass hasClass
- js实现addClass,removeClass
- 用原生js实现addClass,removeClass,hasClass方法
- 仿jQuery原生js实现----hasClass,removeClass,addClass
- js原生扩展addClass,removeClass,hasClass
- 原生js封装addClass removeClass hasClass
- 原生javascript实现addClass和removeClass
- 原生JavaScript addClass() removeClass()
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- 原生JS实现addClass,removeClass,toggleClass ,附:类似jquery hover事件
- 使用原生JS实现jQuery的addClass, removeClass, hasClass函数功能
- Java lombok
- vmware虚拟机上运行ubuntu14没声音解决方法之一
- MySQL5.7版本以后的初始密码问题
- 小技巧
- 纯洁
- JS原生addClass、removeClass实现
- Xshell连接Ubuntu时SSH服务器拒绝了密码问题
- App路由简记(一)
- (提高篇)第一讲 项目 简单的函数运用(一)
- CodeVS2185 最长公共上升子序列
- OKHttp源码分析(一)
- Linux下静态IP的配置
- Hadoop HA笔记
- delphi xe连接oracle心得(备忘)纯原创,一个字一个字打的