From 6734d2324ec269b889f86d7853be4ccf803e0f34 Mon Sep 17 00:00:00 2001
From: Vitaliy Lagunov In most cases, an event such as Attaching many delegated event handlers near the top of the document tree can degrade performance. Each time the event occurs, jQuery must compare all selectors of all attached events of that type to every element in the path from the event target up to the top of the document. For best performance, attach delegated events at a document location as close as possible to the target elements. Avoid excessive use of jQuery can process simple selectors of the form Delegated events that use complex selectors, particularly hierarchical ones, can be several times slower than selectors of the form There are shorthand methods for some events such as Deprecated in jQuery 1.8, removed in 1.9: The name Event performance
click
occurs infrequently and performance is not a significant concern. However, high frequency events such as mousemove
or scroll
can fire dozens of times per second, and in those cases it becomes more important to use events judiciously. Performance can be increased by reducing the amount of work done in the handler itself, caching information needed by the handler rather than recalculating it, or by rate-limiting the number of actual page updates using setTimeout
.document
or document.body
for delegated events on large documents.tag#id.class
very quickly when they are used to filter delegated events. So, "#myForm"
, "a.external"
, and "button"
are all fast selectors. Delegated events that use more complex selectors, particularly hierarchical ones, can be several times slower--although they are still fast enough for most applications. Hierarchical selectors can often be avoided simply by attaching the handler to a more appropriate point in the document. For example, instead of $( "body" ).on( "click", "#commentForm .addNew", addComment )
use $( "#commentForm" ).on( "click", ".addNew", addComment )
.tag#id.class
. Hierarchical selectors can often be avoided simply by attaching the handler to a more appropriate point in the document. For example, instead of $( "body" ).on( "click", "#commentForm .addNew", addComment )
use $( "#commentForm" ).on( "click", ".addNew", addComment )
.Additional notes
.click()
that can be used to attach or trigger event handlers. For a complete list of shorthand methods, see the events category."hover"
used as a shorthand for the string "mouseenter mouseleave"
. It attaches a single event handler for those two events, and the handler must examine event.type
to determine whether the event is mouseenter
or mouseleave
. Do not confuse the "hover" pseudo-event-name with the .hover()
method, which accepts one or two functions.