自制简单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);

猜你喜欢

转载自xiangz.iteye.com/blog/1768835