custom get by class (v6)

Revision 6 of this benchmark created by custom get by class on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<ul id="test">
  <li class="test">
  <li class="test">
  <li class="test">
</ul>
<script>
  ;// just in case
  (function (win) {
    win.g = win.g || {init:[]};
  
    var doc = document;
  
    g.init.push(function _assignClassMethod() {
      if (doc.getElementsByClassName) {
        g.getClass = function _getClass(className, ele) {
          ele = ele || doc;
          return ele.getElementsByClassName(className);
        }
      } else {
        g.getClass = function _getClass(className, ele) {
          ele = ele || doc; 
          var childElements = ele.getElementsByTagName("*"),
              retArr = [],
              regex = new RegExp("\\b" + className + "\\b");
          for (var i = 0, len = childElements.length; i < len; i++) {
            if (regex.test(childElements[i].className))
              retArr.push(childElements[i]);
          }
  
          return retArr;
        }
      }
    });
  
    for (var i = 0, len = g.init.length; i < len; i++) {
      g.init[i]();
    }
  }(window));
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
jquery
var test = $(".test");
ready
custom
var test = g.getClass('test', document.getElementById('test'));
ready
getbyId
var test = function(){
  var els = document.getElementById('test').getElementsByTagName('li'),
      regex = new RegExp('\\btest\\b'),
      retArr = [];
  for (var i = 0, len = els.length; i < len; i++) {
    if (regex.test(els[i].className))
      retArr.push(els[i]);
  }
  return retArr;
}();
ready
custom2
var test = g.getClass('test');
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by custom get by class on
  • Revision 3: published on
  • Revision 4: published on
  • Revision 6: published by custom get by class on