From 31796ee0ce8b6d93ffc3077dbaf54622335ef561 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Sun, 7 Oct 2012 02:35:01 -0400 Subject: [PATCH] Widget: Destroy only when element is the actual target --- tests/unit/widget/widget_core.js | 6 ++++++ ui/jquery.ui.widget.js | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index 5efd91268a7..009902b68de 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -1167,6 +1167,12 @@ test( "._trigger() - instance as element", function() { $( "#widget" ).testWidget().detach(); }); }); + + test( "destroy - remove event bubbling", function() { + shouldDestroy( false, function() { + $( '
child
' ).appendTo( $( "#widget" ).testWidget() ).trigger('remove'); + }); + }); }()); test( "redefine", function() { diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index a125dd5ac90..0575b73fd46 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -228,7 +228,13 @@ $.Widget.prototype = { // TODO remove dual storage $.data( element, this.widgetName, this ); $.data( element, this.widgetFullName, this ); - this._on({ remove: "destroy" }); + this._on({ + remove: function( event ) { + if (event.target === element) { + this.destroy(); + } + } + }); this.document = $( element.style ? // element within the document element.ownerDocument :