使用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 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
javascript实现的鼠标链接提示效果生成器代码
Jun 28 Javascript
JS的数组的扩展实例代码
Jul 09 Javascript
js实现翻页后保持checkbox选中状态的实现方法
Nov 03 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
Aug 07 Javascript
用Cordova打包Vue项目的方法步骤
Feb 02 Javascript
Vue使用Proxy监听所有接口状态的方法实现
Jun 07 Javascript
js实现简单掷骰子小游戏
Oct 24 Javascript
JavaScript实现拖拽功能
Feb 11 Javascript
微信小程序点击滚动到指定位置的实现
May 22 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
js 表格隔行颜色
2009/12/02 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
vue如何判断dom的class
2018/04/26 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
python类参数self使用示例
2014/02/17 Python
python操作xml文件详细介绍
2014/06/09 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Django stark组件使用及原理详解
2019/08/22 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Python实现手绘图效果实例分享
2020/07/22 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
机关搬迁方案
2014/05/18 职场文书
消防安全标语
2014/06/07 职场文书
小鞋子观后感
2015/06/05 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android