From 4177acd6674282d8131e739c7699537b0cf14fba Mon Sep 17 00:00:00 2001 From: Frederik Elvhage Date: Wed, 23 Jul 2014 14:22:13 +0200 Subject: [PATCH] Widget: Improves Performance of cleanData-Method Fixes #9546 The cleanData-Method triggered "remove" on all elements in the tree. After the fix the remove-handler will only be triggered if there is at least one event bound to the element. Doing so increases performance significantly. performance-comparison http://jsfiddle.net/felvhage/r7buw/ Fixes #9546 --- ui/widget.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/widget.js b/ui/widget.js index b86232b736e..466c1e7ef69 100644 --- a/ui/widget.js +++ b/ui/widget.js @@ -27,7 +27,10 @@ $.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 + if( $._data( elem ,"events" ) ){ + $( elem ).triggerHandler( "remove" ); + } // http://bugs.jquery.com/ticket/8235 } catch( e ) {} }