`
zuroc
  • 浏览: 1287266 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

DIY 简易Css选择器

阅读更多
随便写着玩玩,想当然的认为性能应该不错吧.不知道怎么测试.....................

使用演示
html 代码
 
  1. <script>  
  2. window.onload=function(){  
  3. alert($("#div1").innerHTML)  
  4. alert($("#div1 .class2 div")[0].innerHTML)  
  5.   
  6. }  
  7. <!---->script>  
  8. <!---->head><body>  
  9. <div id="div1">  
  10. div id="div1"  
  11.     <div class="class2">  
  12.         div class="class2"  
  13.               
  14.             <div>div<!---->div>  
  15.       
  16.     <!---->div>  
  17. <!---->div>  

js 代码
 
  1. function $A(o){  
  2.     var i=o.length,a=[];  
  3.     while(i)a[--i]=o[i]  
  4.     return i==0?a:[o];  
  5. }  
  6.   
  7. function copy(d,o) {  
  8.     for(var i in d)if(!o[i])o[i]=d[i]  
  9.     return o  
  10. }  
  11. function extend(d,o){copy(d,o.prototype)}  
  12.   
  13. extend({  
  14.     indexOf  
  15.         :  
  16.     function(o){  
  17.         var i=0,l=this.length;  
  18.         for(;iif(this[i]==o)return i;  
  19.         return -1;  
  20.     },  
  21.     U:  
  22.     function(p){//p:part  
  23.         var i=0,j,l=p.length;  
  24.         while(iif(this.indexOf(p[i])==-1)this.push(p[i++]);  
  25.     },  
  26.     each:  
  27.     function(f){  
  28.         var l=this.length,i=0;  
  29.         while(ithis[i++])  
  30.     }  
  31. },Array);  
  32.   
  33.   
  34. function $(o){  
  35.     //return window==this?new $(o):cssSelect(o,document);  
  36.     return css_select(o,document);  
  37. }  
  38.   
  39. function css_select(o,s){  
  40. //s:scope l:list g:get  
  41. o=o.split(' ');  
  42.   
  43. var l,g,c,d;  
  44.   
  45. //#应该只出现1次,如果出现应该是第1个  
  46. if("#"==o[0].charAt(0))s=s.getElementById(o.shift().substring(1));  
  47.   
  48. if(o[0]){  
  49.     s=[s];  
  50.     o.each(  
  51.     function(i){  
  52.             if("."==i.charAt(0))c=i.substring(1),i='*';  
  53.             l=[];  
  54.             s.each(function(e){  
  55.                 g=e.getElementsByTagName(i)  
  56.                 if(c){  
  57.                     d=$A(g);  
  58.                     g=[];  
  59.                     d.each(  
  60.                         function(e){  
  61.                             if(e.className.split(/\s+/).indexOf(c)>-1)g.push(e);  
  62.                         });  
  63.                     c=0;  
  64.                 }  
  65.                 l.U(g);  
  66.             });  
  67.             s=l;  
  68.     });  
  69. }  
  70.   
  71. return s;  
  72. }  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics