jQuery源码解读之removeClass()方法分析


Posted in Javascript onFebruary 20, 2015

本文较为详细的分析了jQuery源码解读之removeClass()方法。分享给大家供大家参考。具体分析如下:

removeClass()方法和addClass()差别不大。这就来看看:

jQuery.fn.extend({

    removeClass: function( value ) {

        var classes, elem, cur, clazz, j, finalValue,

            i = 0,

            len = this.length,

            proceed = arguments.length === 0 || typeof value === "string" && value;

        if ( jQuery.isFunction( value ) ) {

            return this.each(function( j ) {

//这里就是根据你传递的移除类名的函数返回的类名,再次调用removeClass自身了。

                jQuery( this ).removeClass( value.call( this, j, this.className ) );

            });

        }

        if ( proceed ) {

            classes = ( value || "" ).match( rnotwhite ) || [];

            for ( ; i < len; i++ ) {

                elem = this[ i ];

                cur = elem.nodeType === 1 && ( elem.className ?

                    ( " " + elem.className + " " ).replace( rclass, " " ) :

                    ""

                );

                if ( cur ) {

                    j = 0;

                    while ( (clazz = classes[j++]) ) {

//区别在下面的while循环,当检索到当前DOM元素包含你要移除的类名,会用replace替换成" "

                        while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {

                            cur = cur.replace( " " + clazz + " ", " " );

                        }

                    }

//下面也是关键区别之一,判断你是否传递了要移除的类名value。如果没有传递,则finalValue="",如果此时DOM元素有类名的话,也就是条件为true,移除DOM元素的所有类名;

//如果传递了,则移除匹配的类名,移除后,没有移除的类名拼接成了cur,去掉左右两端的空格字符串,将DOM元素的类名设置成cur。

                    finalValue = value ? jQuery.trim( cur ) : "";

                    if ( elem.className !== finalValue ) {

                        elem.className = finalValue;

                    }

                }

            }

        }

        return this;

    }

});

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
仿服务器端脚本方式的JS模板实现方法
Apr 27 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
Jun 12 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
Dec 05 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
GOJS+VUE实现流程图效果
Dec 01 Javascript
JS栈stack类的实现与使用方法示例
Jan 31 Javascript
jQuery源码解读之addClass()方法分析
Feb 20 #Javascript
jQuery源码解读之hasClass()方法分析
Feb 20 #Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 #Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 #Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 #Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
Feb 20 #Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 #Javascript
You might like
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
如何使用php实现评委评分器
2015/07/31 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
子页向父页传值示例
2013/11/27 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JS实现多功能计算器
2020/10/28 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
Python实现网站注册验证码生成类
2017/06/08 Python
总结python中pass的作用
2019/02/27 Python
python多任务之协程的使用详解
2019/08/26 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
个性发展自我评价
2014/02/11 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
常务副总经理任命书
2014/06/05 职场文书
应届生求职信范文
2014/06/30 职场文书
政府个人对照检查材料
2014/08/28 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
民事上诉状范文
2015/05/22 职场文书
《迟到》教学反思
2016/02/24 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python
java版 联机五子棋游戏
2022/05/04 Java/Android
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技