使用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 相关文章推荐
jquery 指南/入门基础
Nov 30 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
Jun 28 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
JavaScript生成随机字符串的方法
Mar 19 Javascript
详解使用Node.js 将txt文件转为Excel文件
Jul 05 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
Jul 28 Javascript
bootstrap-table组合表头的实现方法
Sep 07 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 Javascript
es6函数之严格模式用法实例分析
Mar 17 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
windows中为php安装mongodb与memcache
2015/01/06 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
jQuery select控制插件
2009/08/17 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
python后端接收前端回传的文件方法
2019/01/02 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
对Python中画图时候的线类型详解
2019/07/07 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
pandas分批读取大数据集教程
2020/06/06 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
Java基础面试题
2012/11/02 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
即兴演讲稿
2014/01/04 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python