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中instanceof运算符的用法总结
Nov 19 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
微信小程序实战之自定义抽屉菜单(7)
Apr 18 Javascript
JavaScript类的继承方法小结【组合继承分析】
Jul 11 Javascript
vue组件tabbar使用方法详解
Nov 06 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 Javascript
JS原生瀑布流效果实现
Apr 26 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
JavaScript实现优先级队列
Dec 06 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生成带有雪花背景的验证码
2008/09/28 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
用js获取电脑信息(是使用与IE浏览器)
2013/01/15 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
vue 通过 Prop 向子组件传递数据的实现方法
2020/10/30 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
Python实现Linux命令xxd -i功能
2016/03/06 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
深入理解python中的select模块
2017/04/23 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
中国一家专注拼团的社交购物网站:拼多多
2018/06/13 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
品管员岗位职责
2013/11/10 职场文书
2014年党建工作总结
2014/11/11 职场文书
校本研修个人总结
2015/02/28 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
详解Redis复制原理
2021/06/04 Redis
Oracle 触发器trigger使用案例
2022/02/24 Oracle
正则表达式拆分url实例代码
2022/02/24 Java/Android
Python利用zhdate模块实现农历日期处理
2022/03/31 Python