发新话题
打印

[技术] zQuery库之一——元素选择器简单原型

zQuery库之一——元素选择器简单原型

编写zQuery库初始起因一则是由于旧版的jQuery执行效率(现在的版本好像还可以),二则是对javascript语言的喜爱,每每总是亲历亲为,最后由于在项目中的需求,加入了对事件侦听机制的和DOM节点操作方法的扩展。$ ~( O# C- O+ t+ ^7 j& F( ^
引用:
var zQuery=function(ele,tagName,className){
! }$ q: i/ N6 e/ o9 Q$ f       if(!arr){var arr=new Array()}# D5 M/ Y0 a2 g0 E( H( I
       var elem=typeof(ele)=="object"?ele:document.getElementById(ele);
, b- H. H( W' a5 x2 N/ k/ }) D       if(!tagName){
6 C/ o5 d- h7 o1 _( i' x              return elem;4 T0 |0 N4 D3 e5 O/ I5 P
       }else{
+ m4 d/ V; S  Z. o              if(elem.constructor!=Array){
8 Y$ O, K$ H& }; {                     var tags=elem.all&&!window.opera?tagName=="*"?elem.all:elem.all.tags(tagName):elem.getElementsByTagName(tagName);
, O" l" l2 h# o3 p0 E8 w                     if(!className){
/ ~  \! d4 F1 S+ X/ R                            for(var i=0, l=tags.length; i<l; i++)/ ^0 M: {, K, N. i2 l
                                   arr.push(tags);
0 k4 Q& f: D4 i, I" q/ g                     }else{/ _4 D" v6 d  V0 @
                            for(var i=0, l=tags.length; i<l; i++)
/ F1 _# r3 w" ]4 k" }                                   if(RegExp("(^|\\s+)"+className+"($|\\s+)").test(tags.className))
, H  f8 j" H3 }$ S1 ?7 y                                          arr.push(tags);
8 l- W8 w: f9 l% v2 C                     }
7 u3 z1 @; U1 ^4 K: |  k: B              }else{3 |  v3 b. a3 f$ d0 L0 M, t( Q
                     for(var i=0, l=elem.length; i<l; i++){+ X" y% Z" P  T0 x' a8 Y/ S0 v9 m
                            arr=arr.concat(zQuery(elem,tagName,className));( H0 `- v) ]7 D3 `# Q* S
                     }
* p, u' B$ l5 l0 f1 s              }
5 E2 S6 {; Z% L3 }9 ]       }
7 `- @2 W# C- B' E! d9 u       return arr;* X5 Y* g8 ~4 W6 O, b
}
' S3 U% @* H1 f8 s9 H" gvar $=zQuery;
复制内容到剪贴板
代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>宝儿的zQuery库选择器简单原型</title>
</head>
<body>
<h1>宝儿的zQuery库选择器简单原型</h1>
<div id="idTest">
  <ul>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>
<div class="classTest">
  <ul class="classTest">
    <li class="classTest"></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>
</div>
<script type="text/javascript">
var zQuery=function(ele,tagName,className){
if(!arr){var arr=new Array()}
var elem=typeof(ele)=="object"?ele:document.getElementById(ele);
if(!tagName){
  return elem;
}else{
  if(elem.constructor!=Array){
   var tags=elem.all&&!window.opera?tagName=="*"?elem.all:elem.all.tags(tagName):elem.getElementsByTagName(tagName);
   if(!className){
    for(var i=0, l=tags.length; i<l; i++)
     arr.push(tags[i]);
   }else{
    for(var i=0, l=tags.length; i<l; i++)
     if(RegExp("(^|\\s+)"+className+"($|\\s+)").test(tags[i].className))
      arr.push(tags[i]);
   }
  }else{
   for(var i=0, l=elem.length; i<l; i++){
    arr=arr.concat(zQuery(elem[i],tagName,className));
   }
  }
}
return arr;
}
var $=zQuery;
alert( $("idTest").id );
alert( $("idTest","li").length);
alert( $(document,"div").length );
alert( $( $(document,"div"),"ul").length );
alert( $( $( $(document,"div"),"ul"),"li").length );
alert( $(document,"div","classTest").length );
alert( $( $(document,"div","classTest"),"ul","classTest").length );
alert( $( $( $(document,"div","classTest"),"ul","classTest"),"li","classTest").length );
</script>
</body>
</html>
草根,不是为了草根而草根;
草根,是手段,不是目的,脱颖而出才是目的!

草根站长论坛一定是你脱颖而出的必选的平台!
请帮助宣传/支持草根站长网.草根站长网是一个需要理解的地方,适宜长期居住!

TOP

发新话题