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实现的分页函数
Dec 22 Javascript
jQuery 获取URL参数的插件
Mar 04 Javascript
利用jQuery操作对象数组的实现代码
Apr 27 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
Sep 14 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
详解vue项目中使用token的身份验证的简单实践
Mar 08 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 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/06/06 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
javascript 事件绑定问题
2011/01/01 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
快速入门python学习笔记
2017/12/06 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
用Python解数独的方法示例
2019/10/24 Python
Django 批量插入数据的实现方法
2020/01/12 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
2020/04/16 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
局域网标准
2016/09/10 面试题
销售会计工作职责
2013/12/02 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
党性分析自查总结
2014/10/14 职场文书
美术教师个人总结
2015/02/06 职场文书
产品调价通知函
2015/04/20 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python