Caching $(this) in jQuery (v2)

Revision 2 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<div class="foo">
  <div class="foobar">
    <a href="http://google.de">To Google!</a>
  </div>
</div>

Test runner

Ready to run.

Testing in
TestOps/sec
Uncached
$('div.foo').each(function() {
  $(this).find('a').addClass('google');
  $(this).find('div').toggleClass('foobar');
  $(this).find('div a.google').addClass('baz');
});
ready
Cached
$('div.foo').each(function() {
  $this = $(this);
  $this.find('a').addClass('google');
  $this.find('div').toggleClass('foobar');
  $this.find('div a.google').addClass('baz');
});
ready
For
var elements = document.getElementsByClassName('foo');

for (var i = 0; i < elements.length; i++) {
  $(elements[i]).find('a').addClass('google');
  $(elements[i]).find('div').toggleClass('foobar');
  $(elements[i]).find('div a.google').addClass('baz');
}
ready
for cached
var elements = document.getElementsByClassName('foo');

for (var i = 0; i < elements.length; i++) {
  var ele = $(elements[i])
  ele.find('a').addClass('google');
  ele.find('div').toggleClass('foobar');
  ele.find('div a.google').addClass('baz');
}
ready

Revisions

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