本文较为详细的分析了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程序设计有所帮助。

removeclass 传入两个类_jQuery源码解读之removeClass()方法分析相关推荐

  1. mvc源码解读(10)-ParameterDescriptor方法Action方法的参数描述对象

    前面两篇文章中我们已经大概的讲解了一下ControllerDescriptor和ActionDescriptor这两个分别对应Controller和Action的描述对象,已经大概的知道他们包含的信息 ...

  2. nodeJS之eventproxy源码解读

    1.源码缩影 !(function (name, definition) { var hasDefine = typeof define === 'function', //检查上下文环境是否为AMD ...

  3. open3D源码解读第四篇

    2021SC@SDUSC 文章目录 open3D体素化 VoxelGrid.h VoxelGridIO 小结 open3D体素化 本篇解读voxel(体元/体素)的基本类Voxel,以及VoxelGr ...

  4. EVM源码解读(1):amplify_spatial_lpyr_temporal_iir函数

    前言 本文是对MIT多媒体实验室论文<Eulerian video magnification for revealing subtle changes in the world>对应代码 ...

  5. iOS AOP 框架 - Aspects 源码解读

    Aspects 是什么? Aspects 是 iOS 上的一个轻量级 AOP 库.它利用 method swizzling 技术为已有的类或者实例方法添加额外的代码,它是著名框架 PSPDFKit ( ...

  6. ORB SLAM2源码解读(三):Frame类

    文章目录 前言 构造函数 双目相机 RGBD相机 单目相机 ExtractORB:提取特征点 ComputeBoW:计算词袋数据 SetPose:设置相机外参 isInFrustum:判断一个MapP ...

  7. pytest源码解读HookspecMarker类和HookimplMarker类分析

    1 pluggy简介 pluggy是一个非常优秀的插件系统,它是理解pytest的核心,只有理解了pluggy的原理,才能更好的理解和使用pytest,否则见到了pytest的很多应用都会感觉很难理解 ...

  8. 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment

    24 UsageEnvironment使用环境抽象基类--Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类--Live555源码阅读 ...

  9. 12 哈希表相关类——Live555源码阅读(一)基本组件类

    12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 ...

  10. Java上帝类(Object类)源码总结(1)

    追根溯源,所有的java类都是Oject的子类,那么要进一步了解java,那么去探索Object类的源码就是不可避免的.这个神秘的Oject类里面是什么东东呢? package java.lang; ...

最新文章

  1. 如何调整自定义标签样式
  2. Chap-4 Section 4.2.4 指令修正方式
  3. 阿里云EDAS 3.0重磅发布,无侵入构建云原生应用
  4. Laravel 中asset 函数支持https 协议
  5. cat >> ipconf << EOF > EOF是什么意思
  6. RTX51 tiny——51MCU上的多任务操作系统(转)
  7. php支付sdk接入网页教程,电脑网站支付SDKDemo说明
  8. 10月24日,咱们自己的节日来了!
  9. CSU 1337 费马大定理
  10. Flash Magic使用
  11. 批量添加-动态拼接字符串
  12. 【C语言】斐波那契数列,依次输出1 1 2 3 5 13等前10个数
  13. 搭建本地 Protractor 运行环境
  14. 蓝牙技术|蓝牙在智能手表上的应用
  15. consul知识梳理与环境搭建
  16. python实现因子分析及用于综合评分且配上碎石图(实例分析)
  17. 集合框架背后的数据结构
  18. 设计模式之工厂模式,史上最强,不服来辩!
  19. maven 警告:Description Resource Path Location Type Classpath entry org.eclipse.m2e.MAVE
  20. Altera Rapidio IP IO 映射寄存器的配置

热门文章

  1. 实测 CSDN开发助手-Chrome插件
  2. 基于SSM的手机商城-JAVA【数据库设计、源码、开题报告】
  3. 云计算技术基础【10】
  4. python爬虫-Day02
  5. JavaWeb图书馆管理系统
  6. win7配置TomCat环境
  7. 6,Java毕向东百度云盘
  8. 超出superView的subview响应方法
  9. 谁是克星?4款网页木马拦截工具大比武
  10. 可恶的零宽空格—ZWSP