使用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动态设置样式实现代码(2)
Jan 25 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
通过点击jqgrid表格弹出需要的表格数据
Dec 02 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
Jul 27 Javascript
微信小程序 开发工具快捷键整理
Oct 31 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
JS实现的base64加密解密操作示例
Apr 18 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
解决layui表格的表头不滚动的问题
Sep 04 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 Javascript
vue中提示$index is not defined错误的解决方式
Sep 02 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP编程网上资源导航
2006/10/09 PHP
php简单的会话类代码
2011/08/08 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
php strftime函数的详细用法
2018/06/21 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
JavaScript判断变量是否为undefined的两种写法区别
2013/12/04 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
Python版微信红包分配算法
2015/05/04 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
班组长岗位职责范本
2014/01/05 职场文书
采购部经理岗位职责
2014/02/10 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python