Advertisement
Guest User

Untitled

a guest
Jun 19th, 2011
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DOM:{
  2.             /**
  3.              * 支持类型
  4.              * #id
  5.              * .class
  6.              * tag
  7.              */
  8.             _findChild:function(parent,text){
  9.                 var that=myCore.DOM,
  10.                     indexid=text.indexOf('#'),
  11.                     id=text.slice(indexid+1),
  12.                     indexcls=text.indexOf('.'),
  13.                     cls=text.slice(indexcls+1),
  14.                     tag=text.slice(0,indexcls);
  15.                 //处理单个选择符的多种情况
  16.                 if(indexid!=-1){
  17.                     //如果有#直接返回
  18.                     return [doc.getElementById(id)];   
  19.                 }else if(indexcls!=-1 && indexcls!=0){
  20.                     //有cls并且含有tag
  21.                     return that._getElementsByClassName(cls,parent,tag);   
  22.                 }else if(indexcls!=-1 && indexcls==0){
  23.                     //含有cls,并且仅有cls
  24.                     return that._getElementsByClassName(text.slice(1),parent); 
  25.                 }else{
  26.                     //只含有tag
  27.                     return Array.prototype.slice.call(parent.getElementsByTagName(text),0);
  28.                 }
  29.             },
  30.             _getElementsByClassName:function(cls,parent,tag){
  31.                 var results=[];
  32.                 if(parent==null) parent=doc;
  33.                 if(!tag) tag='*';
  34.                
  35.                 function likecls(s,o){
  36.                     var ary=o.split(' ');
  37.                     for(var i=0;i<ary.length;i++){
  38.                         if(s==ary[i]) return true;
  39.                     }
  40.                     return false;
  41.                 }
  42.                 var eles=parent.getElementsByTagName(tag);
  43.                 for(var i=0;i<eles.length;i++){
  44.                     if(eles[i].className==cls || likecls(cls,eles[i].className)){
  45.                         results.push(eles[i]);
  46.                     }
  47.                 }
  48.                 return results;
  49.             },
  50.             _selector:function(selectors){
  51.                 var fn=myCore.fn,
  52.                     that=myCore.DOM,
  53.                     selectors=selectors,
  54.                     realselector='',
  55.                     order=[], //选择器序列
  56.                     result,
  57.                     results;   
  58.                            
  59.                 if(typeof(selectors)!='string') return null;
  60.                
  61.                 //首先按照空格分组
  62.                 order=selectors.split(' ');
  63.                
  64.                 //先找第一个id,确定序列的最高级
  65.                 //如果没有id则找tag,
  66.                 //如果没有tag则找class
  67.                 for(var i=order.length-1;i>=0;i--){
  68.                     var selector=order[i].slice(0,1);
  69.                     if(selector=='#'){
  70.                         realselector+=' '+order[i];
  71.                         break;                     
  72.                     }else{
  73.                         if(order[i].match(/#/)){
  74.                             realselector+=' '+order[i];
  75.                             break; 
  76.                         }else{
  77.                             realselector+=' '+order[i];
  78.                         }
  79.                     }
  80.                 }
  81.                 //确定最后的序列,排除多ID情况
  82.                 order=realselector.slice(1).split(' ').reverse();
  83.                
  84.                 if(order.length==1){
  85.                     //没空格,单选择的直接返回值
  86.                     return that._findChild(doc,order[0]);
  87.                 }else{
  88.                     //多个空格的迭代寻找
  89.                     for(var i=0;i<order.length;i++){
  90.                         if(i==order.length-1) return results;
  91.                        
  92.                         result=that._findChild(doc,order[i]);
  93.                        
  94.                         results=[];
  95.                        
  96.                         for(var j=0;j<result.length;j++){
  97.                             results=results.concat(that._findChild(result[j],order[i+1]));
  98.                         }
  99.                     }
  100.                     return results;
  101.                 }  
  102.             },
  103.             query:function(selector){
  104.                 var that=myCore.DOM;
  105.                 if(doc.querySelectorAll) return doc.querySelectorAll(selector);
  106.                 return that._selector(selector);
  107.             },
  108.             get:function(selector){
  109.                 var that=myCore.DOM;
  110.                 if(doc.querySelector) return doc.querySelector(selector);  
  111.                 var result=that._selector(selector);
  112.                 if((typeof(result)=="object") && (result instanceof Array)) return result[0];
  113.                 return result;             
  114.             }
  115.         },
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement