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)从而实现增加 ...
随机推荐
- unbuntu apahce 2 设置 多域名
1.找到apache2 的设置路径 默认的apache的路径为/etc/apache2/ 2. 修改httpd.conf 本文192.168.0.1 为自己的服务器的ip,下面一样的意思 Server ...
- GCD同步异步 串行并行大解析
/** 核心概念 任务:block里需要执行的操作 队列:把任务添加进入队列中,按照先进先出的原则来执行任务 串行队列:一个一个的执行 并行队列:可以让多个任务并发(同时)执行(自动开启多个线程同时 ...
- C# sql语句拼接时 like情况的防sql注入的用法
今天下午同事问我一个比较基础的问题,在拼接sql语句的时候,如果遇到Like的情况该怎么办. 我原来的写法就是简单的拼接字符串,后来同事问我如果遇到sql注入怎么办.我想了下,这确实是个问题. 刚在网 ...
- (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csd ...
- Play Framework 完整实现一个APP(二)
1.开发DataModel 在app\moders 下新建User.java package models; import java.util.*; import javax.persistence. ...
- C# 获取 新浪微博登录之后的 完整的Cookie
程序说明: 1.此项目 包含两个项目, 一个 Winform WinGetMocroblogCookie 用于手动 登录 新浪微博 其中涉及到的技术有: 使用webbrowser 获取HttpOnly ...
- Oracle行内链接不会引起USER_TABLES中CHAIN_CNT值变化
前几天和群里网友讨论一个关于行内链接(intra-block chaining)的问题,问题非常有意思,恰好今天有空,顺便整理了一下这些知识点. 问题描述:下面SQL,创建一个超过255列的表(实际为 ...
- [Linux 性能检测工具]IOSTAT
IOSTAT NAME: Iostat, 报告CPU的统计,和 I/O的统计. 语法: iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k ...
- 十五天精通WCF——第二天 告别烦恼的config配置
经常搞wcf的基友们肯定会知道,当你的应用程序有很多的“服务引用”的时候,是不是有一种疯狂的感觉...从一个环境迁移到另外一个环境,你需要改变的 endpoint会超级tmd的多,简直就是搞死了人.. ...
- C#邮件发送问题(二)
C#邮件发送问题(一) 三.C#下创建基于TcpClient发送邮件组件 在上一节在Dos命令行下测试SMTP服务器连接时,已经使用了SMTP的部分命令,但是当时无法对信息进行编码和解码,也就无法继续 ...