@@ -134,38 +134,46 @@ jQuery.extend( {
134134 } ,
135135
136136 cleanData : function ( elems ) {
137- var data , elem , type ,
138- special = jQuery . event . special ,
139- i = 0 ;
140-
141- for ( ; ( elem = elems [ i ] ) !== undefined ; i ++ ) {
142- if ( acceptData ( elem ) ) {
143- if ( ( data = elem [ dataPriv . expando ] ) ) {
144- if ( data . events ) {
145- for ( type in data . events ) {
146- if ( special [ type ] ) {
147- jQuery . event . remove ( elem , type ) ;
148-
149- // This is a shortcut to avoid jQuery.event.remove's overhead
150- } else {
151- jQuery . removeEvent ( elem , type , data . handle ) ;
152- }
153- }
154- }
155-
156- // Support: Chrome <=35 - 45+
157- // Assign undefined instead of using delete, see Data#remove
158- elem [ dataPriv . expando ] = undefined ;
159- }
160- if ( elem [ dataUser . expando ] ) {
161-
162- // Support: Chrome <=35 - 45+
163- // Assign undefined instead of using delete, see Data#remove
164- elem [ dataUser . expando ] = undefined ;
165- }
166- }
167- }
168- }
137+ var data , elem , type ,
138+ special = jQuery . event . special ,
139+ i = 0 ;
140+
141+ elems = jQuery . makeArray ( elems ) ;
142+ while ( i < elems . length ) {
143+ elem = elems [ i ] ;
144+
145+ if ( acceptData ( elem ) ) {
146+ if ( ( data = elem [ dataPriv . expando ] ) ) {
147+ if ( data . events ) {
148+ for ( type in data . events ) {
149+ if ( special [ type ] ) {
150+ jQuery . event . remove ( elem , type ) ;
151+
152+ // This is a shortcut to avoid jQuery.event.remove's overhead
153+ } else {
154+ jQuery . removeEvent ( elem , type , data . handle ) ;
155+ }
156+ }
157+ }
158+
159+ // Support: Chrome <=35 - 45+
160+ // Assign undefined instead of using delete, see Data#remove
161+ elem [ dataPriv . expando ] = undefined ;
162+ }
163+ if ( elem [ dataUser . expando ] ) {
164+
165+ // Support: Chrome <=35 - 45+
166+ // Assign undefined instead of using delete, see Data#remove
167+ elem [ dataUser . expando ] = undefined ;
168+ }
169+
170+ // Remove the element from the array while preserving the index positions
171+ elems . splice ( i , 1 ) ;
172+ } else {
173+ i ++ ;
174+ }
175+ }
176+ }
169177} ) ;
170178
171179jQuery . fn . extend ( {
0 commit comments