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 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
对之前写的jquery分页做下升级
Jun 19 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
JS实现保留n位小数的四舍五入问题示例
Aug 03 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
jstree的简单实例
Dec 01 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
vue-router源码之history类的浅析
May 21 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
js判断两个数组相等的5种方法
May 06 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 strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Flask之请求钩子的实现
2018/12/23 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
通过实例解析python描述符原理作用
2020/01/22 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
Django实现内容缓存实例方法
2020/06/30 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
师范应届生求职信
2013/11/15 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
教师师德承诺书
2014/03/26 职场文书
中学生评语大全
2014/04/18 职场文书
个人评语大全
2014/05/04 职场文书
课程设计的心得体会
2014/09/03 职场文书
公司感谢信范文
2015/01/22 职场文书
Django与数据库交互的实现
2021/06/03 Python
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers