addClass, removeClass, toggleClass(从jquery中抠出来)
<div id="d3" class="cur"></div>
var mylibs = (function(){
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
core_trim = String.prototype.trim,
core_rspace = /\s+/,
rclass = /[\t\r\n]/g;
var trim = function(text){
if(core_trim && !core_trim.call("\uFEFF\xA0")){
return text == null ?
"" :
core_trim.call(text);
}else{
return text == null ?
"" :
(text + "").replace(rtrim, "");
}
};
return {
addClass:function(elem,value){
var classNames,setClass;
if (!value || typeof value !== "string") return;
if (elem.nodeType !== 1) return;
classNames = value.split(core_rspace);
if (!elem.className && classNames.length === 1){
elem.className = value;
}else{
setClass = " " + elem.className + " ";
for (var i = 0; i < classNames.length; i++){
if (setClass.indexOf(" " + classNames[ i ] + " ") < 0)
setClass += classNames[ i ] + " ";
}
elem.className = trim(setClass);
}
},
removeClass:function(elem,value){
var removes,className;
if ((!value || typeof value !== "string") && value !== undefined) return;
if (elem.nodeType !== 1 || !elem.className) return;
removes = (value || "").split(core_rspace);
className = (" " + elem.className + " ").replace(rclass," ");
// loop over each item in the removal list
for (var i=0;i<removes.length;i++){
// Remove until there is nothing to remove,
while (className.indexOf(" " + removes[i] + " ") >= 0)
className = className.replace(" " + removes[i] + " "," ");
}
elem.className = value ? trim(className) : "";
},
toggleClass:function(elem,value,stateVal){
var type = typeof value,
isBool = typeof stateVal === "boolean";
if (type !== "string") return;
// toggle individual class names
var className,
i = 0,
state = stateVal,
classNames = value.split(core_rspace);
while ((className = classNames[ i++ ])){
// check each className given, space separated list
state = isBool ? state : !this.hasClass(elem,className);
(state ? this['addClass'] : this['removeClass'])(elem,className);
}
},
hasClass:function(elem,selector){
var className = " " + selector + " ";
if (elem.nodeType === 1 && (" " + elem.className + " ").replace(rclass," ").indexOf(className) >= 0)
return true;
return false;
}
};
})();
var dom = document.getElementById('d3');
mylibs.addClass(dom,'red');
mylibs.removeClass(dom,'cur');
mylibs.toggleClass(dom,'red cur');
addClass, removeClass, toggleClass(从jquery中抠出来)的更多相关文章
- jQuery addClass removeClass toggleClass hasClass is(.class)用法
jQuery addClass removeClass toggleClass hasClass is(.class)用法 <%@ page language="java" ...
- jQuery addClass removeClass toggleClass方法概述
通过动态改变类名(class),可以让其修改元素呈现出不同的效果.在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,DOM元素响应的className属性 ...
- Jquery重新学习之三[属性addClass(),removeClass(),toggleClass()]
1:属性.addClass(class|fn)及.removeClass(class|fn) 1.1 .addClass(class) 参数class一个或多个要添加到元素中的CSS类名,请用空格分开 ...
- class 添加样式,删,开关 【选择】addClass,removeClass,toggleClass
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>< ...
- class 添加样式,删除,开关 【选择】addClass,removeClass,toggleClass
<1> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>< ...
- 原生JS实现addClass,removeClass,toggleClass
jQuery操作class的方式非常强大,但是目前还有一些人不知道如何使用或者由于项目统一性的原因无法使用jquery. 在此写了一个利用原生js来实现对dom元素class的操作方法 1.addCl ...
- .addClass(),.removeClass(),.toggleClass()的区别
.addClass("className")方法是用来给指定元素增加类名,也就是说给指定的元素追加样式: 可以同时添加多个类名,空格符隔开 $("selector&quo ...
- 原声js实现addClass removeClass toggleClass效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery学习笔记 .addClass()/.removeClass()简单学习
使用jQuery或javaScript来动态改变页面中某个或部分元素的样式,为了实现这样的功能,我们往往都是使用jQuery或javaScript来控制HTML中DOM的类名(class)从而实现增加 ...
随机推荐
- 通知 - NSNotificationCenter
1.每一个应用程序都有一个通知中心(NSNotificationCenter)实例,专门负责协助不同对象之间的消息通信: 2.任何一个对象都可以向通知中心发布通知(NSNotification), 描 ...
- android deep link(深度链接)与自定义协议!
此自定义仅供参考! 首先打开androidManifest.xml 在MainActivity中添加如下内容: <activity android:name=".MainActivit ...
- TCP/IP 协议难点之一—— IP分片
1 IP协议简单介绍 就个人而言,网络中,抛开网络安全加密这些,就只单单讨论协议本身,比较难的有三个地方: IP分片与重组 TCP滑动窗口与TCP状态的改变 TCP定时器 其实协议本身根据<TC ...
- MonoDevelop编辑器中文乱码解决
说解决乱码分几步,总共分三部! 1. Tools -> Options 2. 3.点击Font->点击TextEditor会出现下边选框,选取喜欢风格并且不乱码即可.
- 列式存储(二)JFinal如何处理从前台传回来的二维数组
上一篇说到了列式存储,这一篇说它的存储问题,将每个模块的所有属性字段单独存到一张表中,新增页面时,所有的字段都去数据库请求,这样多个模块的新增功能可以共用一个jsp.由于每个模块的字段个数不一样,有的 ...
- Java 引用
Java 对象的引用方式有如下四种,这四种方式主要是为了给垃圾回收提供更灵活的操作: 1.强引用,最常见的引用方式,当一个对象被一个或一个以上的引用变量引用时,它处于可达状态,这时不会被垃圾回收器回收 ...
- IOS设计模式-组合设计模式
前言:本篇博文将让你学会软件开发中的"何为树形结构"."何为组合模式"."组合模式可以解决的问题"等相关知识. 内容大纲: 1.树形结构 2 ...
- eclipse如何优化构建的速度(Building)
小Alan在平时的开发中很喜欢做一件事,那就是盯着eclipse的状态栏,看着Build Workspace的进度条一点一点慢慢的走,小Alan坐在电脑面前默默不想说话,就是心中总是有十万匹马在奔腾, ...
- c#.net 使用NPOI导入导出标准Excel (asp.net winform csharp)
尝试过很多Excel导入导出方法,都不太理想,无意中逛到oschina时,发现了NPOI,无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文. 曾使用过的方法 ...
- linux pstack命令总结
pstack命令用来显示进程的栈跟踪. pstack 命令必须由相应进程的属主或root账号运行.可以使用pstack来确定进程挂起的位置.此命令只有一个参数,那就是pid,具体关于pstack的介绍 ...