Pure js hasClass vs jQuery hasclass

JavaScript performance comparison

Revision 40 of this test case created

Preparation code

<div class="super cali frag ilist ic expi ali docious tinker tailor soldier sailor richman poorman beggarman Thief" id="someElement"></div><script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
  var el = document.getElementById('someElement');
 
function hasClassIteration(el, selector)
{
   for(var i = 0, j = 0, cls = el.className, c = cls.length, s = selector.length, code; i < c; i++)
   {
      code = cls.charCodeAt(i);
      if (code == selector.charCodeAt(j))
      {
        j++;
      }
      else
      {
          if (j == s && code == 32)
          {
             return true;
          }
          else
          {
            j = 0;
          }
      }
   }
   return (j == s) ? true : false;
}
 
function hasClass(el, selector) {
    return (" " + el.className + " ").indexOf(" " + selector + " ") > -1
  }

  function hasClassRegex(el, selector) {
    return (el.className && new RegExp("(^|\\s)" + selector + "(\\s|$)").test(el.className));
  }

  function classListContains(el, selector){
    return el.classList.contains(selector);
  }
</script>

Preparation code output

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
jQuery
$(el).hasClass('Thief');
pending…
Pure JS - indexOf
hasClass(el, 'Thief');
pending…
With classic Iteration
hasClassIteration(el, 'Thief');
pending…
DOM
classListContains(el, 'Thief');
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment