removeclass 传入两个类_jQuery源码解读之removeClass()方法分析
本文较为详细的分析了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()方法分析相关推荐
- mvc源码解读(10)-ParameterDescriptor方法Action方法的参数描述对象
前面两篇文章中我们已经大概的讲解了一下ControllerDescriptor和ActionDescriptor这两个分别对应Controller和Action的描述对象,已经大概的知道他们包含的信息 ...
- nodeJS之eventproxy源码解读
1.源码缩影 !(function (name, definition) { var hasDefine = typeof define === 'function', //检查上下文环境是否为AMD ...
- open3D源码解读第四篇
2021SC@SDUSC 文章目录 open3D体素化 VoxelGrid.h VoxelGridIO 小结 open3D体素化 本篇解读voxel(体元/体素)的基本类Voxel,以及VoxelGr ...
- EVM源码解读(1):amplify_spatial_lpyr_temporal_iir函数
前言 本文是对MIT多媒体实验室论文<Eulerian video magnification for revealing subtle changes in the world>对应代码 ...
- iOS AOP 框架 - Aspects 源码解读
Aspects 是什么? Aspects 是 iOS 上的一个轻量级 AOP 库.它利用 method swizzling 技术为已有的类或者实例方法添加额外的代码,它是著名框架 PSPDFKit ( ...
- ORB SLAM2源码解读(三):Frame类
文章目录 前言 构造函数 双目相机 RGBD相机 单目相机 ExtractORB:提取特征点 ComputeBoW:计算词袋数据 SetPose:设置相机外参 isInFrustum:判断一个MapP ...
- pytest源码解读HookspecMarker类和HookimplMarker类分析
1 pluggy简介 pluggy是一个非常优秀的插件系统,它是理解pytest的核心,只有理解了pluggy的原理,才能更好的理解和使用pytest,否则见到了pytest的很多应用都会感觉很难理解 ...
- 24 UsageEnvironment使用环境抽象基类——Live555源码阅读(三)UsageEnvironment
24 UsageEnvironment使用环境抽象基类--Live555源码阅读(三)UsageEnvironment 24 UsageEnvironment使用环境抽象基类--Live555源码阅读 ...
- 12 哈希表相关类——Live555源码阅读(一)基本组件类
12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 ...
- Java上帝类(Object类)源码总结(1)
追根溯源,所有的java类都是Oject的子类,那么要进一步了解java,那么去探索Object类的源码就是不可避免的.这个神秘的Oject类里面是什么东东呢? package java.lang; ...
最新文章
- 如何调整自定义标签样式
- Chap-4 Section 4.2.4 指令修正方式
- 阿里云EDAS 3.0重磅发布,无侵入构建云原生应用
- Laravel 中asset 函数支持https 协议
- cat >> ipconf << EOF > EOF是什么意思
- RTX51 tiny——51MCU上的多任务操作系统(转)
- php支付sdk接入网页教程,电脑网站支付SDKDemo说明
- 10月24日,咱们自己的节日来了!
- CSU 1337 费马大定理
- Flash Magic使用
- 批量添加-动态拼接字符串
- 【C语言】斐波那契数列,依次输出1 1 2 3 5 13等前10个数
- 搭建本地 Protractor 运行环境
- 蓝牙技术|蓝牙在智能手表上的应用
- consul知识梳理与环境搭建
- python实现因子分析及用于综合评分且配上碎石图(实例分析)
- 集合框架背后的数据结构
- 设计模式之工厂模式,史上最强,不服来辩!
- maven 警告:Description Resource Path Location Type Classpath entry org.eclipse.m2e.MAVE
- Altera Rapidio IP IO 映射寄存器的配置