如何让我的css选择器引擎更灵活?

时间:2013-04-28 07:00:32

标签: javascript dom css-selectors

我为我的自定义javascript库创建了一个自定义css选择器引擎函数,

var catchEl = function(el) { // Catching elements by identifying the first character of a string

var firstChar = el[0], 
   actualNode = el.substring(1, el.length),
   elements,
   tempElems = [];

if (!document.querySelectorAll) {
   try{
       if(firstChar === "#") {//So, we can look for ids
          tempElems.push(document.getElementById(actualNode));
       } else if(firstChar === ".") {//or classes
          elements = document.getElementsByClassName(actualNode);
          for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
       } else {//or tags
          elements = document.getElementsByTagName(el);
          for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
       }
   } catch(e) {};
} else {//but before everything we must check if the best function is available
   try{
      elements = document.querySelectorAll(el);
      for(i=0;i<elements.length;i++) tempElems.push(elements[i]);
   } catch(e) {};
}
return tempElems;
}

此函数返回一个元素数组。但是,我转过头来试图让它更灵活,以便它也可以返回windowdocumentthis对象,但是不成功。每当我尝试push window对象进入tempElems数组时,数组仍为空。

所以,我想知道当字符串通过它或返回相应的对象(windowdocumentthis)时,如何使此函数返回一个元素数组根据需要。

注意:我不想使用jQuery。所以,请不要发布有关jQuery的任何答案。

0 个答案:

没有答案