aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTJ VanToll <tj.vantoll@gmail.com>2014-07-15 15:16:26 -0400
committerTJ VanToll <tj.vantoll@gmail.com>2014-07-15 15:49:15 -0400
commit3ca32b2ad8a3366d14317eb767e89d28254e97a4 (patch)
tree5aba1ae78a321814806f21d3c0de6ce5eef3a733
parent7594a3142547e078326872cb0d6e2d7f32f4c808 (diff)
downloadjquery-ui-3ca32b2ad8a3366d14317eb767e89d28254e97a4.tar.gz
jquery-ui-3ca32b2ad8a3366d14317eb767e89d28254e97a4.zip
Draggable: Manage ui-draggable-handle correctly in nested instances
-rw-r--r--tests/unit/draggable/draggable_core.js13
-rw-r--r--ui/draggable.js10
2 files changed, 17 insertions, 6 deletions
diff --git a/tests/unit/draggable/draggable_core.js b/tests/unit/draggable/draggable_core.js
index beab67f19..dd526e5ec 100644
--- a/tests/unit/draggable/draggable_core.js
+++ b/tests/unit/draggable/draggable_core.js
@@ -291,4 +291,17 @@ test( "ui-draggable-handle assigned to appropriate element", function() {
ok( !element.find( "p" ).hasClass( "ui-draggable-handle" ), "removed in destroy()" );
});
+test( "ui-draggable-handle managed correctly in nested draggables", function() {
+ expect( 4 );
+ var parent = $( "<div><div></div></div>" ).draggable().appendTo( "#qunit-fixture" ),
+ child = parent.find( "div" ).draggable();
+
+ ok( parent.hasClass( "ui-draggable-handle" ), "parent has class name on init" );
+ ok( child.hasClass( "ui-draggable-handle" ), "child has class name on init" );
+
+ parent.draggable( "destroy" );
+ ok( !parent.hasClass( "ui-draggable-handle" ), "parent loses class name on destroy" );
+ ok( child.hasClass( "ui-draggable-handle" ), "child retains class name on destroy" );
+});
+
})( jQuery );
diff --git a/ui/draggable.js b/ui/draggable.js
index cd87ad2fc..5f29f4cf8 100644
--- a/ui/draggable.js
+++ b/ui/draggable.js
@@ -78,6 +78,7 @@ $.widget("ui.draggable", $.ui.mouse, {
_setOption: function( key, value ) {
this._super( key, value );
if ( key === "handle" ) {
+ this._removeHandleClassName();
this._setHandleClassName();
}
},
@@ -314,16 +315,13 @@ $.widget("ui.draggable", $.ui.mouse, {
},
_setHandleClassName: function() {
- var handle = this.options.handle ?
+ this.handleElement = this.options.handle ?
this.element.find( this.options.handle ) : this.element;
- this._removeHandleClassName();
- handle.addClass( "ui-draggable-handle" );
+ this.handleElement.addClass( "ui-draggable-handle" );
},
_removeHandleClassName: function() {
- this.element.find( ".ui-draggable-handle" )
- .addBack()
- .removeClass( "ui-draggable-handle" );
+ this.handleElement.removeClass( "ui-draggable-handle" );
},
_createHelper: function(event) {