使用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 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
jquery click([data],fn)使用方法实例介绍
Jul 08 Javascript
js函数返回多个返回值的示例代码
Nov 05 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
jQuery拖拽div实现思路
Feb 19 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
Oct 05 Javascript
Vue.js实现无限加载与分页功能开发
Nov 03 Javascript
ajax级联菜单实现方法实例分析
Nov 28 Javascript
vue中子组件传递数据给父组件的讲解
Jan 27 Javascript
layui table 列宽百分比显示的实现方法
Sep 28 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
php中随机显示图片的函数代码
2011/06/23 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
跟老齐学Python之编写类之二方法
2014/10/11 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Python中有趣在__call__函数
2015/06/21 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
Python 含参构造函数实例详解
2017/05/25 Python
Django Aggregation聚合使用方法解析
2019/08/01 Python
python写一个随机点名软件的实例
2019/11/28 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
承诺书格式范文
2014/06/03 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
黄埔军校观后感
2015/06/10 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
总结几个非常实用的Python库
2021/06/26 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python