Changes between Version 1 and Version 2 of Ticket #9358, comment 5


Ignore:
Timestamp:
Jun 6, 2013, 8:23:39 AM (9 years ago)
Author:
Scott González
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #9358, comment 5

    v1 v2  
    44http://jsbin.com/iqeyat/17/
    55
    6 {{{
    7 --- old.js
    8 +++ new.js
    9 @@ -567,29 +567,37 @@
    10         _init: $.noop,
    11  
    12         destroy: function() {
    13 -               this._destroy();
    14 -               // we can probably remove the unbind calls in 2.0
    15 -               // all event bindings should go through this._on()
    16 -               this.element
    17 -                       .unbind( this.eventNamespace )
    18 -                       // 1.9 BC for #7810
    19 -                       // TODO remove dual storage
    20 -                       .removeData( this.widgetName )
    21 -                       .removeData( this.widgetFullName )
    22 -                       // support: jquery <1.6.3
    23 -                       // http://bugs.jquery.com/ticket/9413
    24 -                       .removeData( $.camelCase( this.widgetFullName ) );
    25 -               this.widget()
    26 -                       .unbind( this.eventNamespace )
    27 -                       .removeAttr( "aria-disabled" )
    28 -                       .removeClass(
    29 -                               this.widgetFullName + "-disabled " +
    30 -                               "ui-state-disabled" );
    31 -
    32 -               // clean up events and states
    33 -               this.bindings.unbind( this.eventNamespace );
    34 -               this.hoverable.removeClass( "ui-state-hover" );
    35 -               this.focusable.removeClass( "ui-state-focus" );
    36 +               try{
    37 +                       this._destroy();
    38 +               } finally {
    39 +                       // we can probably remove the unbind calls in 2.0
    40 +                       // all event bindings should go through this._on()
    41 +                       this.element
    42 +                               .unbind( this.eventNamespace )
    43 +                               // 1.9 BC for #7810
    44 +                               // TODO remove dual storage
    45 +                               .removeData( this.widgetName )
    46 +                               .removeData( this.widgetFullName )
    47 +                               // support: jquery <1.6.3
    48 +                               // http://bugs.jquery.com/ticket/9413
    49 +                               .removeData( $.camelCase( this.widgetFullName ) );
    50 +                       this.widget()
    51 +                               .unbind( this.eventNamespace )
    52 +                               .removeAttr( "aria-disabled" )
    53 +                               .removeClass(
    54 +                                       this.widgetFullName + "-disabled " +
    55 +                                       "ui-state-disabled" );
    56 +
    57 +                       // clean up events and states
    58 +                       this.bindings.unbind( this.eventNamespace );
    59 +                       this.hoverable.removeClass( "ui-state-hover" );
    60 +                       this.focusable.removeClass( "ui-state-focus" );
    61 +
    62 +                       //clean up properties
    63 +                       this.element=null;
    64 +                       this.options=null;
    65 +
    66 +               }
    67         },
    68         _destroy: $.noop,
    69  
    70 @@ -2487,6 +2495,10 @@
    71  
    72                 //Initialize the mouse interaction
    73                 this._mouseInit();
    74 +
    75 +               //clean up to avoid closure leakage
    76 +               that = null,
    77 +               o = null;
    78  
    79         },
    80  
    81 
    82 }}}
     6::diff removed::