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)从而实现增加 ...
随机推荐
- 关于iOS中的时间
两类 绝对时间 [NSDate date].CFAbsoluteTimeGetCurrent(),或者gettimeofday(). 返回的是从某一个时刻开始,度过的秒数.会随着用户设置的系统时间更改 ...
- (20160602)开源第三方学习之SDWebImage
这个类库提供一个UIImageView类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. 地址:https://github.com/rs/SDWebIm ...
- 【代码笔记】iOS-使图片两边不拉伸,中间拉伸
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...
- iOS Xcode编译报错问题解决办法汇总
1. 编译出现错误:linker command failed with exit code 1 第一种方法:找到Build settings->Linking->Other Linker ...
- 小试SQL SERVER 2014 加密备份
数据库加密: http://blog.csdn.net/u012992506/article/details/25283035 create master key encrypti ...
- android Gui系统之WMS(2)----窗口的添加
Android系统很多,但是最常用的就两类,一类是有系统进场管理的,系统窗口.还有一类就是由应用程序产生的,应用窗口. 1.系统窗口的添加流程 1.1 addStatusBarWindow Phone ...
- Lambda 表达式(C# 编程指南) 微软microsoft官方说明
Visual Studio 2013 其他版本 Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地 ...
- WPF学习之路(五) 实例:写字板
写字板实例一 MainWindow.xaml <Window x:Class="Wordpad01.MainWindow" xmlns="http://schema ...
- ORACLE关于索引是否需要定期重建争论的整理
ORACLE数据库中的索引到底要不要定期重建呢? 如果不需要定期重建,那么理由是什么? 如果需要定期重建,那么理由又是什么?另外,如果需要定期重建,那么满足那些条件的索引才需要重建呢?关于这个问题,网 ...
- [Linux 维护]收集centos系统性能指标
#!/bin/bash # awk 'END{print}' get the last row iplist=$(cat ~/fanr/shell/Weekly/ip.list) for _IP in ...