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 对象的定义方法
Jan 10 Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
JQuery 学习技巧总结
May 21 Javascript
Javascript 页面模板化很多人没有使用过的方法
Jun 05 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
Aug 19 Javascript
js调试系列 源码定位与调试[基础篇]
Jun 18 Javascript
jquery实现相册一下滑动两次的方法
Feb 09 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
Node.js+Express配置入门教程
May 19 Javascript
JS中如何比较两个Json对象是否相等实例代码
Jul 13 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
微信小程序实现点击空白隐藏的方法示例
Aug 13 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 编程安全性小结
2010/01/08 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
Python获取系统默认字符编码的方法
2015/06/04 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Python实现RabbitMQ6种消息模型的示例代码
2020/03/30 Python
django实现模板中的字符串文字和自动转义
2020/03/31 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
应届生求职推荐信
2013/10/28 职场文书
质量承诺书范文
2014/03/27 职场文书
大三学习计划书范文
2014/05/02 职场文书
幼儿学前班评语
2014/12/29 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS