|
半路出家 管理员
认证草根
  
草根创始人 - 帖子
- 3619
- 积分
- 3785
- 威望
- 11857
- 金币
- 199 元
|
楼主
大 中
小 发表于 2008-6-28 22:09 只看该作者
( 看帖回帖是一种美德,您的回帖是对楼主最大的支持。)
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>
草根,不是为了草根而草根;
草根,是手段,不是目的,脱颖而出才是目的!
草根站长论坛一定是你脱颖而出的必选的平台!
请帮助宣传/支持草根站长网.草根站长网是一个需要理解的地方,适宜长期居住!
|