jQuery selector vs hasClass

JavaScript performance comparison

Revision 30 of this test case created

Info

Test which is faster, a selector including the class compared to hasClass.

Preparation code

<script src="//code.jquery.com/jquery-git2.min.js"></script>

<div class="foo"></div>

<script>
  var found = false;
  $("body").addClass("foobar");
</script>
<script>
Benchmark.prototype.setup = function() {
    var cachedBody = document.body,
        cachedIndexOf = Array.prototype.indexOf;
   
};
</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
selector
if ($("body.foobar").length) {
 found = true;
}
pending…
hasClass
if ($("body").hasClass("foobar")) {
 found = true;
}
pending…
native
if (document.body.className.indexOf('foobar') > -1) {
 found = true;
}
pending…
Native cached body
if (cachedBody.className.indexOf('foobar') > -1) { 
 found = true;
}
pending…
Native cached body + indexOf
if (cachedIndexOf.call(cachedBody.className, 'foobar') > -1) { 
 found = true;
}
pending…
native classList.contains
if (document.body.classList.contains("foobar")) {
 found = true;
}
pending…
cached classList.contains
if (cachedBody.classList.contains("foobar")) {
 found = true;
}
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