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 相关文章推荐
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
控制台报错object is not a function的解决方法
Aug 24 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
javascript基础知识
Jun 07 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
Nov 01 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
jquery中关于bind()方法的使用技巧分享
Mar 30 jQuery
React应用中使用Bootstrap的方法
Aug 15 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
Jan 27 jQuery
Ajax请求超时与网络异常处理图文详解
May 23 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空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
偷看我的初中毕业鉴定
2014/01/29 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
法人委托书范本
2014/09/15 职场文书
生日答谢词
2015/01/05 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android