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 相关文章推荐
基于jquery的鼠标拖动效果代码
May 30 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
May 29 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
JointJS流程图的绘制方法
Dec 03 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 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数组去重实例及分析
2013/11/26 PHP
微信支付开发告警通知实例
2016/07/12 PHP
php实现在新浪云中使用imagick生成缩略图并上传的方法
2016/09/26 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
jQuery.uploadify文件上传组件实例讲解
2016/09/23 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
用javascript实现倒计时效果
2021/02/09 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python实现手机销售管理系统
2019/03/19 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Spy++的使用方法及下载教程
2021/01/29 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
2014年工会工作总结
2014/11/12 职场文书
先进党支部申报材料
2014/12/24 职场文书
运动会加油稿50字
2015/07/21 职场文书
志愿服务心得体会
2016/01/15 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
2019思想汇报范文
2019/05/21 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏