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 相关文章推荐
Javascript操纵Cookie实现购物车程序
Feb 15 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
js每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
js的flv视频播放器插件使用方法
Jun 23 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
cocos2dx+lua实现橡皮擦功能
Dec 20 Javascript
Seajs源码详解分析
Apr 02 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
Nov 09 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 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
使用Yii2实现主从数据库设置
2016/11/20 PHP
Javascript中的相等与不等运算
2010/04/25 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
nodejs实现简单的gulp打包
2017/12/21 NodeJs
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
django批量导入xml数据
2016/10/16 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
python利用requests库模拟post请求时json的使用教程
2018/12/07 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
英语商务邀请函范文
2014/01/16 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
企业形象策划方案
2014/05/29 职场文书
机械工程师岗位职责
2014/06/16 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
安全保证书
2015/01/16 职场文书
职称评定个人总结
2015/03/05 职场文书
oracle索引总结
2021/09/25 Oracle
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技