【学】jQuery的源码思路5——增加class的操作
- hasClass, addClass, removeClass, toggleClass
//addClass,加入class会对元素,利用正则,将class中多余的空格去掉
zQuery.prototype.addClass=function(sClass){
var re=new RegExp('\\b'+sClass+'\\b');
for(var i=0;i<this.elements.length;i++){
if(!re.test(this.elements[i].className)){
this.elements[i].className=this.elements[i].className+' '+sClass;
}
this.elements[i].className=this.elements[i].className.replace(/^\s+|\s+$/g,'').replace(/\s+/g,' ');
}
};
//removeClass,同样会整理class中的多余空格
zQuery.prototype.removeClass=function(sClass){
var re=new RegExp('\\b'+sClass+'\\b');
for(var i=0;i<this.elements.length;i++) {
if(re.test(this.elements[i].className)){
this.elements[i].className=this.elements[i].className.replace(re,'');
if(!this.elements[i].className){
this.elements[i].removeAttribute('class');
}
}
if(this.elements[i].className){
this.elements[i].className=this.elements[i].className.replace(/^\s+|\s+$/g,'').replace(/\s+/g,' ');
}
}
};
//hasClass
zQuery.prototype.hasClass=function(sClass){
var re=new RegExp('\\b'+sClass+'\\b');
for(var i=0;i<this.elements.length;i++){
return re.test(this.elements[i].className);
}
};
//toggleClass
zQuery.prototype.toggleClass=function(sClass){
for(var i=0;i<this.elements.length;i++){
if($(this.elements[i]).hasClass(sClass)){
$(this.elements[i]).removeClass(sClass);
}else{
$(this.elements[i]).addClass(sClass);
}
}
};
【学】jQuery的源码思路5——增加class的操作的更多相关文章
- 【学】jQuery的源码思路4——增加一些功能
本文说一些简单的jQuery实现原理 eq() get() hide() show() index() find() //返回找到的一组元素中的第n个 zQuery.prototype.eq=func ...
- 【学】jQuery的源码思路6——增加each,animaion,ajax以及插件机制
each() 插件机制 animation ajax //each() //这里第一个参数指定将this指向每次循环到的那个元素身上,而第三个参数element其实就是this本身所以和第一个参数是一 ...
- 【学】jQuery的源码思路1——后代选择器
jQuery的源码思路1--后代选择器 这里探讨一下jQuery中后代选择器的封装原理,并自己写一下 getEle('#div1 ul li .box');接受的参数就是个后代选择器,类似于这样: # ...
- 【学】jQuery的源码思路2——$符号是如何封装的
jQuery中的$符号功能很强大,原因在于对函数参数的个数以及种类的控制,还有对于面向对象思想的运用 function jQuery(args){ //接受参数,并对其判断 this.elements ...
- 【学】jQuery的源码思路3——添加事件及其他
这段添加的方法有: 各类事件函数 css() addEvent() toggle() //添加各种事件,将常用的事件名称放入数组,然后循环着加入到zQuery对象的原型上 var eventArr = ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- jQuery.Callbacks 源码解读二
一.参数标记 /* * once: 确保回调列表仅只fire一次 * unique: 在执行add操作中,确保回调列表中不存在重复的回调 * stopOnFalse: 当执行回调返回值为false,则 ...
- jQuery.attributes源码分析(attr/prop/val/class)
回顾 有了之前的几篇对于jQuery.attributes相关的研究,是时候分析jQuery.attr的源码了 Javascript中的attribute和property分析 attribute和p ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
随机推荐
- See you~_树状数组
Problem Description Now I am leaving hust acm. In the past two and half years, I learned so many kno ...
- JavaScript笔记及总结
前言: 网页中HTML为内容,CSS做展现(修饰内容),Js为行为(交互). Js属于基于对象型的脚本语言,在学习时当作编程语言(如java,c#)学习更好理解. javascript是实现网页动态效 ...
- Newtonsoft.Json 处理多态类型的反序列化
Newtonsoft.Json的序列化和反序列化很成熟也很好用, 最近在处理多态类型的反序列化中遇到了问题, 反序列化后只能到基类,而得不到也不能转换到子类.从网上查询了一番后,需要写一个创建类型的C ...
- Apache commons-client authentication(授权)
import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.UsernamePasswo ...
- PLS-00306错误
ORA-06550: line 1, column 7:PLS-00306: wrong number or types of arguments in call to 'P'ORA-06550: l ...
- Centos 7防火墙firewalld开放80端口(转)
开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 -- ...
- C#编程语言与面向对象——继承
现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性. 构成继承关系的两个类中,Animal称为父类(par ...
- iOS 9正式版开始推送 升级机型非常广泛
北京时间今日零时,苹果正式推送了iOS9,对于iPhone和iPad来说这一版系统升级都有很多重要改进,而升级的机型也非常宽泛,甚至连2011年的iPad 2与iPhone 4s都获得了支持,所以广大 ...
- SQL server2008-对象资源管理器
对象资源管理器:数据库 .安全性.服务器对象.复制.管理 .SQL server代理 六部分组成
- 【转载】Android 自动化测试 Emmagee
Emmagee 是一个性能测试小工具 用来监控指定被测应用在使用过程中占用机器的CPU, 内存,流量资源的性能小工具 Emmagee 介绍 Emmagee是网易杭州研究院QA团队开发的一个简单易上手的 ...