diff --git a/tests/unit/draggable/draggable.html b/tests/unit/draggable/draggable.html
index dce226a9ae..cd068eb208 100644
--- a/tests/unit/draggable/draggable.html
+++ b/tests/unit/draggable/draggable.html
@@ -16,6 +16,7 @@
"ui/jquery.ui.core.js",
"ui/jquery.ui.widget.js",
"ui/jquery.ui.mouse.js",
+ "ui/jquery.ui.resizable.js",
"ui/jquery.ui.draggable.js"
]
});
diff --git a/tests/unit/draggable/draggable_core.js b/tests/unit/draggable/draggable_core.js
index 31002addcf..28a19f3805 100644
--- a/tests/unit/draggable/draggable_core.js
+++ b/tests/unit/draggable/draggable_core.js
@@ -44,4 +44,33 @@ test("No options, absolute", function() {
TestHelpers.draggable.shouldMove(el);
});
+test("resizable handle with complex markup (#8756 / #8757)", function() {
+ expect( 2 );
+
+ $('#draggable1')
+ .append(
+ $('
')
+ .addClass("ui-resizable-handle")
+ .addClass("ui-resizable-w")
+ .append($('
'))
+ );
+
+ var handle = '.ui-resizable-w div',
+ target = $('#draggable1').draggable().resizable({ handles: 'all' }),
+ drag = function(el, dx) {
+ $(el)
+ .simulate("mouseover")
+ .simulate("drag", {
+ dx: dx || 0,
+ speed: 'sync'
+ });
+ };
+
+ drag(handle, -50);
+ equal( target.width(), 250, "compare width" );
+
+ drag(handle, 50);
+ equal( target.width(), 200, "compare width" );
+});
+
})(jQuery);
diff --git a/ui/jquery.ui.draggable.js b/ui/jquery.ui.draggable.js
index dad5af0745..b982ac6be3 100644
--- a/ui/jquery.ui.draggable.js
+++ b/ui/jquery.ui.draggable.js
@@ -70,7 +70,7 @@ $.widget("ui.draggable", $.ui.mouse, {
var o = this.options;
// among others, prevent a drag on a resizable-handle
- if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle')) {
+ if (this.helper || o.disabled || $(event.target).closest('.ui-resizable-handle').length > 0) {
return false;
}