使用JS实现jQuery的addClass, removeClass, hasClass函数功能


Posted in Javascript onOctober 31, 2014

废话不多说,直接上代码

function addClass(obj, cls){

    var obj_class = obj.className,//获取 class 内容.

    blank = (obj_class != '') ? ' ' : '';//判断获取到的 class 是否为空, 如果不为空在前面加个'空格'.

    added = obj_class + blank + cls;//组合原来的 class 和需要添加的 class.

    obj.className = added;//替换原来的 class.

}

 

function removeClass(obj, cls){

    var obj_class = ' '+obj.className+' ';//获取 class 内容, 并在首尾各加一个空格. ex) 'abc        bcd' -> ' abc        bcd '

    obj_class = obj_class.replace(/(\s+)/gi, ' '),//将多余的空字符替换成一个空格. ex) ' abc        bcd ' -> ' abc bcd '

    removed = obj_class.replace(' '+cls+' ', ' ');//在原来的 class 替换掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '

    removed = removed.replace(/(^\s+)|(\s+$)/g, '');//去掉首尾空格. ex) 'bcd ' -> 'bcd'

    obj.className = removed;//替换原来的 class.

}

 

function hasClass(obj, cls){

    var obj_class = obj.className,//获取 class 内容.

    obj_class_lst = obj_class.split(/\s+/);//通过split空字符将cls转换成数组.

    x = 0;

    for(x in obj_class_lst) {

        if(obj_class_lst[x] == cls) {//循环数组, 判断是否包含cls

            return true;

        }

    }

    return false;

}
Javascript 相关文章推荐
javascript 计算两个整数的百分比值
Dec 26 Javascript
JQuery中clone方法复制节点
May 18 Javascript
jquery实现左右滑动菜单效果代码
Aug 27 Javascript
JS实现完全语义化的网页选项卡效果代码
Sep 15 Javascript
Bootstrap table使用方法总结
May 10 Javascript
Vue通过input筛选数据
Oct 26 Javascript
浅谈node的事件机制
Oct 09 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 Javascript
如何使JavaScript休眠或等待
Apr 27 Javascript
vue实现可拖拽的dialog弹框
May 13 Vue.js
JsRender实用入门教程
Oct 31 #Javascript
JsRender for object语法简介
Oct 31 #Javascript
JsRender for index循环索引用法详解
Oct 31 #Javascript
javascript常用函数归纳整理
Oct 31 #Javascript
让html页面不缓存js的实现方法
Oct 31 #Javascript
js读取cookie方法总结
Oct 31 #Javascript
jQuery获取对象简单实现方法小结
Oct 30 #Javascript
You might like
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
人力管理专业毕业生求职信
2014/02/27 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
班干部演讲稿
2014/04/24 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
机电系毕业生求职信
2014/07/11 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
公司员工安全协议书
2014/11/21 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
人民调解协议书
2016/03/21 职场文书
商业计划书之服装
2019/09/09 职场文书
iPhone13再次曝光
2021/04/15 数码科技
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL