HTML Preparation code:
x
 
1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
2
3
<div class="foobar" id="node">Hello</div>
Script Preparation code:
 
var node = document.getElementById('node');
var className = node.className;
var rx = new RegExp('\\b' + className + '\\b');
function hasClassString(e, c) {
  var s = e.className, i = s.indexOf(c);
  return i != -1 && (s.charCodeAt(i - 1) || 32) == 32 && (s.charCodeAt(i + c.length) || 32) == 32;
};
Tests:
  • $.hasClass

     
    var hasClass = $(node).hasClass(className);
  • RegExp

     
    var hasClass = rx.test(node.className);
  • Dry RegExp

     
    var drx = new RegExp('\\b' + className + '\\b');
    var hasClass = drx.test(node.className);
  • indexOf

     
    var hasClass = node.className.indexOf(className) !== -1;
  • classList

     
    var hasClass = node.classList.contains(className);
  • hasClassString

     
    var hasClass = hasClassString(node, className);
  • indexOf more than operator

     
    var hasClass = node.className.indexOf(className) > -1;
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    $.hasClass
    RegExp
    Dry RegExp
    indexOf
    classList
    hasClassString
    indexOf more than operator

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 5 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4133.0 Safari/537.36 Edg/84.0.508.0
Chrome 84 on Windows
View result in a separate tab
Test name Executions per second
$.hasClass 786190.6 Ops/sec
RegExp 3424062.2 Ops/sec
Dry RegExp 1154993.4 Ops/sec
indexOf 4177220.5 Ops/sec
classList 3525022.8 Ops/sec
hasClassString 2540448.8 Ops/sec
indexOf more than operator 4210653.5 Ops/sec