使用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 相关文章推荐
Js判断CSS文件加载完毕的具体实现
Jan 17 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
使用jQuery的attr方法来修改onclick值
Jul 07 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
移动端 一个简单易懂的弹出框
Jul 06 Javascript
深入剖析JavaScript面向对象编程
Jul 12 Javascript
浅谈js中的三种继承方式及其优缺点
Aug 10 Javascript
Bootstrap源码解读模态弹出框(11)
Dec 28 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
react 父子组件之间通讯props
Sep 08 Javascript
vuex state中的数组变化监听实例
Nov 06 Javascript
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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
jquery prop的使用介绍及与attr的区别
2013/12/19 Javascript
JavaScript关闭当前页面(窗口)不带任何提示
2014/03/26 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
Angular.JS通过指令操作DOM的方法
2017/05/10 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
js实现左右轮播图
2020/01/09 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
2017/04/15 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python manage.py runserver流程解析
2019/11/08 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
阿迪达斯越南官网:adidas越南
2020/07/19 全球购物
供货协议书
2014/04/22 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
同学聚会感言一句话
2015/07/30 职场文书