<ul id="theList">
<li class="odd">Item 1</li>
<li class="even">Item 2</li>
<li class="odd">Item 3</li>
<li class="even">Item 4</li>
<li class="odd">Item 5</li>
<li class="even">Item 6</li>
<li class="odd">Item 7</li>
<li class="even">Item 8</li>
<li class="odd">Item 9</li>
<li class="even">Item 10</li>
<li class="odd">Item 11</li>
<li class="even">Item 12</li>
<li class="odd">Item 13</li>
<li class="even">Item 14</li>
<li class="odd">Item 15</li>
<li class="even">Item 16</li>
<li class="odd">Item 17</li>
<li class="even">Item 18</li>
<li class="odd">Item 19</li>
<li class="even">Item 20</li>
<li class="odd">Item 21</li>
<li class="even">Item 22</li>
<li class="odd">Item 23</li>
<li class="even">Item 24</li>
<li class="odd">Item 25</li>
<li class="even">Item 26</li>
<li class="odd">Item 27</li>
<li class="even">Item 28</li>
<li class="odd">Item 29</li>
<li class="even">Item 30</li>
</ul>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js'></script>
var els = $('.even');
var els = document.querySelectorAll('.even');
var els = document.getElementsByClassName('even');
var els = $('li.even');
var els = document.querySelectorAll('li.even');
--enable-precise-memory-info
flag.
Test case name | Result |
---|---|
jQuery- | |
querySelectorAll | |
getElementsByClassName | |
jQuery: mixed selector | |
querySelectorAll: mixed selector |
Test name | Executions per second |
---|---|
jQuery- | 1383309.6 Ops/sec |
querySelectorAll | 1227435.5 Ops/sec |
getElementsByClassName | 6786428.5 Ops/sec |
jQuery: mixed selector | 628169.7 Ops/sec |
querySelectorAll: mixed selector | 908958.9 Ops/sec |
Let's dive into the benchmark and explain what's being tested.
Benchmark Overview
The benchmark is comparing three methods to get elements by class name in HTML:
getElementsByClassName
( native JavaScript method)querySelectorAll
(CSS selector API method)jQuery
(a popular JavaScript library)Methods Compared
Here are the individual test cases:
$('.class')
method to get elements by class name (without specifying the element type).li.even
) to get elements by class and tag name.$('selector')
method with a mixed selector (li.even
) to get elements by class and tag name.Pros and Cons of Each Method
Here are some pros and cons of each method:
getElementsByClassName
, supports CSS selectors.Library Used
The jQuery
library is used in the jQuery-
and jQuery: mixed selector
test cases. The jQuery
library provides a convenient way to select elements by class name, but it also adds an extra dependency that can impact performance.
Special JS Feature/ Syntax
None of the methods mentioned require special JavaScript features or syntax beyond standard CSS selectors.
Other Alternatives
If you need to get elements by class name in JavaScript, some alternative methods include:
document.getElementsByClassName()
(similar to getElementsByClassName
, but returns an HTMLCollection)Array.prototype.filter()
with a callback function that checks the element's class namesquerySelectorAll()
methodKeep in mind that each of these alternatives has its own trade-offs in terms of performance, flexibility, and browser support.