使用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跨浏览器显示的file上传控件
Oct 24 Javascript
jQuery+css实现的换页标签栏效果
Jan 27 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
Dec 27 Javascript
Node.JS中事件轮询(Event Loop)的解析
Feb 25 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
axios中cookie跨域及相关配置示例详解
Dec 20 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
node.js express框架简介与实现
Jul 23 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
Sep 24 Javascript
Vue3.0 手写放大镜效果
Jul 25 Vue.js
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/05/31 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
laravel与thinkphp之间的区别与优缺点
2021/03/02 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
javascript常用方法汇总
2014/12/02 Javascript
javascript基础语法学习笔记
2016/01/04 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
实例分析javascript中的异步
2020/06/02 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
python数据结构之列表和元组的详解
2017/09/23 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
详解Python之unittest单元测试代码
2018/01/24 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
EJB的几种类型
2012/08/15 面试题
应聘收银员个人的求职信
2013/11/30 职场文书
开会迟到检讨书
2014/01/08 职场文书
执行总经理岗位职责
2014/02/03 职场文书
小学生暑假感言
2014/02/06 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
面试感谢信范文
2015/01/22 职场文书
实习班主任自我评价
2015/03/11 职场文书
初中军训感想
2015/08/07 职场文书
python 调用js的四种方式
2021/04/11 Python
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang