Skip to content

Commit ef4a928

Browse files
Optimize performance of Event.stopObserving by returning early when called on an element with no registered observers. [Victor Homyakov]
1 parent 29434fc commit ef4a928

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/prototype/dom/event.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -894,14 +894,17 @@
894894
// for bulk removal of event listeners. We use them rather than recurse
895895
// back into `stopObserving` to avoid touching the registry more often than
896896
// necessary.
897-
897+
898898
// Stop observing _all_ listeners on an element.
899899
function stopObservingElement(element) {
900-
var uid = getUniqueElementID(element),
901-
registry = getRegistryForElement(element, uid);
902-
900+
// Do a manual registry lookup because we don't want to create a registry
901+
// if one doesn't exist.
902+
var uid = getUniqueElementID(element), registry = GLOBAL.Event.cache[uid];
903+
// This way we can return early if there is no registry.
904+
if (!registry) return;
905+
903906
destroyRegistryForElement(element, uid);
904-
907+
905908
var entries, i;
906909
for (var eventName in registry) {
907910
// Explicitly skip elements so we don't accidentally find one with a

0 commit comments

Comments
 (0)