mj_v0.1

/*
 * mj JavaScript Library v0.1
 * Copyright 2012, Maple Jan
 * About:一个极简的工具库,简化常用DOM操作。
 */

var mj = new function() {
	//遍历指定元素的所有后代元素
	var eachChild = function(elem, arr) {
		var child = elem.childNodes,
			cLength = child.length;
		if(cLength === 0) {
			return arr;
		}
		for(var i = 0; i < cLength; i++) {
			if(child[i].nodeType === 1) {
				arr.push(child[i]);
				eachChild(child[i], arr);
			}
		}
		return arr;
	};
	this.getId = function(id) {
		return document.getElementById(id);
	};
	this.getTag = function(elem, tag) {
		return elem.getElementsByTagName(tag);
	};
	this.getClass = function(elem, classname){
		var childArr = eachChild(elem, []),
			childArrLength = childArr.length,
			matchChildArr = [];
		for(var i = 0; i < childArrLength; i++) {
			if(childArr[i].className !== "") {
				var classArr = childArr[i].className.split(/\s+/),
					classArrLength = classArr.length;
				for(var j = 0; j < classArrLength; j++) {
					if(classname === classArr[j]) {
						matchChildArr.push(childArr[i]);
						break;
					}
				}
			}
		}
		return matchChildArr;
	};
	//子元素添加到父元素内的最后位置
	this.append = function(father, child) {
		var cate = typeof child;
		switch(cate) {
			case "object":
				father.appendChild(child);
				return father;
			case "string":
				father.innerHTML += child;
				return father;
			default:
				console.error("第二个参数必须为DOM对象或字符串!");
		}
	};
	//子元素添加到父元素内的第一位
	this.prepend = function(father, child) {
		var cate = typeof child;
		switch(cate) {
			case "object":
				father.insertBefore(child, father.firstChild);
				return father;
			case "string":
				father.innerHTML = child + father.innerHTML;
				return father;
			default:
				console.error("第二个参数必须为DOM对象或字符串!");
		}
	};
	//添加类名
	this.addClass = function(elem, classname) {
		if(typeof classname === "string") {
			var addClassArr = classname.split(/\s+/),
				hadClassArr = elem.className.split(/\s+/);
			for(var j = 0; j<addClassArr.length; j++) {
				var check = 1;
				for(var i = 0; i < hadClassArr.length; i++) {
					if(addClassArr[j] === hadClassArr[i]) {
						check = 0;
					}
				}
				if(check != 0) {
					hadClassArr.push(addClassArr[j]);
				}
			}
			var str = hadClassArr.join(" ");
			elem.className = str;
			return elem;
		} else {
			console.error("第二个参数必须是字符串!");
		}
	};
	//删除类名
	this.removeClass = function(elem, classname) {
		var cate = typeof classname;
		switch(cate) {
			case "undefined":
				elem.className = "";
				return elem;
			case "string":
				var addClassArr = classname.split(/\s+/),
					hadClassArr = elem.className.split(/\s+/),
					str;
				for(var j = 0; j < addClassArr.length; j++) {
					for(var i = 0; i < hadClassArr.length; i++) {
						if(addClassArr[j] === hadClassArr[i]) {
							hadClassArr.splice(i,1);
						}
					}
				}
				var str = hadClassArr.join(" ");
				elem.className = str;
				return elem;
			default:
				console.error("第二个参数必须是字符串!");
		}
	};
}


PS: 目前getClass的性能很差


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值