Delegated vs Non-delegated Click Event Handlers (v44)

Revision 44 of this benchmark created by Sampath lankapura on


Description

Determining whether it is faster to use click(), bind(), delegate(), or live() on click events.

This version actually runs the event handlers, rather than simply binding them.

Preparation HTML

<div id="extra-dom-content">
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
  <a href="#">Home</a>
</div>
<a href="#">Home</a>
<ul id="nav">
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="bind">DelegateLink</a>
  </li>
  <li>
    <a href="#" class="delegate">NonDelegateLink</a>
  </li>
  <li>
    <a href="#" class="live">NonDelegateLink</a>
  </li>

</ul>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
/script

Setup

function fireEvent(element) {
    element.trigger('click');
    }
    
    $(document).on('click', '.live', function(e) {
    });
    
    $('.bind').on('click', function(e) {
    });
    
    $('#nav').on('click', '.delegate', function(e) {
    });
    
    var bind = $('.bind');
    var live = $('.live');
    var delegate = $('.delegate');

Test runner

Ready to run.

Testing in
TestOps/sec
Delegated
fireEvent(delegate);
ready
Live
fireEvent(live);
ready
Bind
fireEvent(bind);
ready

Revisions

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