From d3270eaa3d7679f94590ae67584a466a36f05152 Mon Sep 17 00:00:00 2001 From: Frederik Elvhage Date: Thu, 24 Jul 2014 15:04:06 +0200 Subject: [PATCH] ui.widget: Improves Performance of cleanData-Method (Issue #9546) The cleanData-Method triggered "remove" on all elements in the tree. After the fix the remove-handler will only be triggered if it exists. Doing so increases performance significantly. See performance-comparison http://jsfiddle.net/r7buw/17/ Fixes #9546 --- ui/widget.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui/widget.js b/ui/widget.js index b86232b736e..24837a52ee5 100644 --- a/ui/widget.js +++ b/ui/widget.js @@ -27,7 +27,11 @@ $.cleanData = (function( orig ) { return function( elems ) { for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { try { - $( elem ).triggerHandler( "remove" ); + // Only trigger remove when necessary to save time + var events = $._data( elem, "events" ); + if( events !== undefined && events.remove ){ + $( elem ).triggerHandler( "remove" ); + } // http://bugs.jquery.com/ticket/8235 } catch( e ) {} }