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 相关文章推荐
破除网页鼠标右键被禁用的绝招大全
Dec 27 Javascript
用JQUERY增删元素的代码
Feb 14 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
Javascript中判断对象是否为空
Jun 10 Javascript
用JS生成UUID的方法实例
Mar 30 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 Javascript
微信小程序实现选项卡功能
Jun 19 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
Oct 30 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/17 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php实现求相对时间函数
2015/06/15 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
JScript中的&quot;this&quot;关键字使用方式补充材料
2007/03/08 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Django URL传递参数的方法总结
2016/08/28 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
django使用LDAP验证的方法示例
2018/12/10 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
移动Web—CSS为Retina屏幕替换更高质量的图片
2012/12/24 HTML / CSS
Java程序员综合测试题
2014/04/25 面试题
签约仪式主持词
2014/03/19 职场文书
防沙治沙典型材料
2014/05/07 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
导游词之扬州大明寺
2019/10/09 职场文书