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 01 Javascript
封装了一个js图片轮换效果的函数
Sep 28 Javascript
JS实现获取键盘按下的按键并显示在页面上的方法
Nov 04 Javascript
javascript判断firebug是否开启的方法
Nov 23 Javascript
jQuery源码分析之init的详细介绍
Feb 13 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
详解vue项目首页加载速度优化
Oct 18 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
JS获取动态添加元素的方法详解
Jul 31 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
Dec 22 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中用数组的方法设置cookies
2011/04/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
常见的javascript跨域通信方法
2015/12/31 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
Python中optparse模块使用浅析
2015/01/01 Python
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python logging.info在终端没输出的解决
2020/05/12 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
品牌服务方案
2014/06/03 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS