给dom节点扩展closest方法

想必大家都用过jq的closest方法(用来查找上级中最近的指定元素),这里我写的是一个简单的原生方法的实现

实际原生dom也是有这个方法的,只是兼容的浏览器少之又少

这里是一个最最简单的实现,工作中经常用到,所以记录一下

HTMLElement.prototype.closest = function(str){
	
	if(!str){
		return this.parentNode;
	}else{
		var temp = this.parentNode;
		while(temp){
			if(checkNode(temp)){
    			return temp;
    		}else{
    			temp = temp.parentNode;
    		}
		}
	}
	function checkNode(obj){
		var _this = obj;
		switch(str.substr(0,1)){
			case '.':
				if(_this.classList.contains(str.split('.')[1])){
					return true;
				}else{
					return false;
				}
				break;
			case '#':
				if(_this.id == str.split('#')[1]){
					return true;
				}else{
					return false;
				}
				break;
			default:
				if(_this.tagName == str){
					return true;
				}else{
					return false;
				}
				break;
		}
	}
}
给dom节点扩展closest方法

发表评论

电子邮件地址不会被公开。 必填项已用*标注