元素的classList属性怎么用

查看HTML元素的classList元素将返回类型为DOMTokenList的对象,所以我们要研究的是该对象的属性和方法。

该类型的对象描述了一个用空格分隔的字符串数组,数组的每一项代表该元素的一个类名。HTMLElement.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList or HTMLAreaElement.relList等方法都会返回该对象。

属性:

  • length -- 只读属性,对于classList,它指示有多少个类名

方法:

  • item(idx) -- 返回指定位置的项。如果未找到,则返回undefined,某些版本的浏览器返回null;
  • contains(token) -- 如果数组中包含指定的元素,返回true,否则返回false;对于classList,该方法相当于jQuery中的hasClass方法;
  • add(token) -- 向数组中添加元素。对于classList该方法相当于jQuery中的addClass
  • remove(token) -- 移除指定的元素。对于classList该方法相当于jQuery中的removeClass方法;
  • toggle(token) -- 切换某个元素。对于classList该方法相当于jQuery中的toggleClass方法;

简单的案例

var elemClassList = document.querySelector('#Bubby').classList,
    classNum = elemClassList.length;
elemClassList.add('sexy');
elemClassList.remove('sexy');
elemClassList.toggle('fat');
if( elemClassList.contains('nipple') ){
    console.info('OH YEAH');
}

模拟一下jQuery的addClass和removeClass

var Sys = {
	addClass: function (elem, value) {
		// 如果没有传递元素
		if (!elem) return;
		var arr = [];
		// 如果只有一个元素
		if (elem.nodeType) arr.push(elem);
		// 如果传递了HTML元素集合,如NodeList或HTMLCollection
		if (elem.length) {
			for (var j = 0, ln = elem.length; j < ln; j++) {
				// 只处理HTML标签元素
				if (elem[j].nodeType) arr.push(elem[j]);
			}
		}
		// 为每一个元素添加类名
		for (var i = 0, len = arr.length; i < len; i++) {
			var elem = arr[i];
			if (elem.nodeType === 1 && elem.className.indexOf(value) < 0 ) {
				elem.classList.add(value);
			}
		}
	},
	removeClass: function (elem, value) {
		var arr = [];
		if (!elem) return;
		// 如果只传递一个HTML元素
		if (elem.nodeType) arr.push(elem);
		// 如果传递了HTML元素集合
		if (elem.length) {
			for (var j = 0, ln = elem.length; j < ln; j++) {
				// 只处理HTML标签元素
				if (elem[j].nodeType) arr.push(elem[j]);
			}
		}
		for (var z = 0, len = arr.length; z < len; z++) {
			var elem = arr[z];
			if (elem.nodeType === 1 && elem.className.indexOf() >= 0) {
				elem.classList.remove(value);
			}
		}
	}
};

 

转载于:https://www.cnblogs.com/zjxwow/archive/2013/01/18/2866267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值