自制简单JavaScript选择器

    JQuery有一个神奇的$符,被称为JQ的选择器,JQ的选择器使用了强大的Sizzle引擎,功能很多,但我们有时不需要如此复杂的功能,只需简单的找一些Id、Class或Tags。

    所以自己随便写了一个简单选择器。

 

 

 

var _G = function(selector, context){
  // _G(""),_G(null),_G(false)
  if(!selector) return "";
  
  //_G(DOMElement)
  if(selector.nodeType){
     	return selector;
  }
  
  if(typeof selector !== 'string') return '';
  
  // "#" , "." ,"*" or other char
  var type = selector.charAt(0);
  
  context = _G(context) || document;
  
  if(type == '*'){

     	return context.getElementsByTagName('*');

  }
  else if(type == '#'){

     	return context.getElementById(selector.slice(1));

  }
  else if(type == '.'){

     	var selector = selector.slice(1), re = context.getElementsByClassName ? context.getElementsByClassName(selector) : [];

     	if(!re[0]){
       		var e = _G('*',context),
           	      l = e.length,
           	      r = new RegExp("(^| )"+selector+"($| )"),
           	      i=0;
       		while(i<l){
           	      r.test(e[i].className) && re.push(e[i]);
           	      i++;
       		}

     			
     	}
     	return re.length>1?re:re[0];
            
  }
  else{
     	return context.getElementsByTagName(selector) || ""; 
  }
  return "";

};

console.log(_G('.demo')[0].innerHTML);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值