mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Mouse: tie the preventClickEvent property to the event target, not the container. Fixes #4752 - link event firing on sortable with connect list
This commit is contained in:
parent
412d1aa1c9
commit
e2a693ba78
@ -120,6 +120,7 @@ $.extend($.simulate.prototype, {
|
|||||||
this.simulateEvent(document, "mousemove", coord);
|
this.simulateEvent(document, "mousemove", coord);
|
||||||
this.simulateEvent(document, "mousemove", coord);
|
this.simulateEvent(document, "mousemove", coord);
|
||||||
this.simulateEvent(target, "mouseup", coord);
|
this.simulateEvent(target, "mouseup", coord);
|
||||||
|
this.simulateEvent(target, "click", coord);
|
||||||
},
|
},
|
||||||
findCenter: function(el) {
|
findCenter: function(el) {
|
||||||
var el = $(this.target), o = el.offset();
|
var el = $(this.target), o = el.offset();
|
||||||
|
@ -36,4 +36,48 @@ test("#3019: Stop fires too early", function() {
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('#4752: link event firing on sortable with connect list', function () {
|
||||||
|
var fired = {},
|
||||||
|
hasFired = function (type) { return (type in fired) && (true === fired[type]); };
|
||||||
|
|
||||||
|
$('#sortable').clone().attr('id', 'sortable2').insertAfter('#sortable');
|
||||||
|
|
||||||
|
$('#main ul').sortable({
|
||||||
|
connectWith: '#main ul',
|
||||||
|
change: function (e, ui) {
|
||||||
|
fired.change = true;
|
||||||
|
},
|
||||||
|
receive: function (e, ui) {
|
||||||
|
fired.receive = true;
|
||||||
|
},
|
||||||
|
remove: function (e, ui) {
|
||||||
|
fired.remove = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#main ul li').live('click.ui-sortable-test', function () {
|
||||||
|
fired.click = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#sortable li:eq(0)').simulate('click');
|
||||||
|
ok(!hasFired('change'), 'Click only, change event should not have fired');
|
||||||
|
ok(hasFired('click'), 'Click event should have fired');
|
||||||
|
|
||||||
|
// Drag an item within the first list
|
||||||
|
fired = {};
|
||||||
|
$('#sortable li:eq(0)').simulate('drag', { dx: 0, dy: 40 });
|
||||||
|
ok(hasFired('change'), '40px drag, change event should have fired');
|
||||||
|
ok(!hasFired('receive'), 'Receive event should not have fired');
|
||||||
|
ok(!hasFired('remove'), 'Remove event should not have fired');
|
||||||
|
ok(!hasFired('click'), 'Click event should not have fired');
|
||||||
|
|
||||||
|
// Drag an item from the first list to the second, connected list
|
||||||
|
fired = {};
|
||||||
|
$('#sortable li:eq(0)').simulate('drag', { dx: 0, dy: 150 });
|
||||||
|
ok(hasFired('change'), '150px drag, change event should have fired');
|
||||||
|
ok(hasFired('receive'), 'Receive event should have fired');
|
||||||
|
ok(hasFired('remove'), 'Remove event should have fired');
|
||||||
|
ok(!hasFired('click'), 'Click event should not have fired');
|
||||||
|
});
|
||||||
|
|
||||||
})(jQuery);
|
})(jQuery);
|
||||||
|
10
ui/jquery.ui.mouse.js
vendored
10
ui/jquery.ui.mouse.js
vendored
@ -26,8 +26,8 @@ $.widget("ui.mouse", {
|
|||||||
return self._mouseDown(event);
|
return self._mouseDown(event);
|
||||||
})
|
})
|
||||||
.bind('click.'+this.widgetName, function(event) {
|
.bind('click.'+this.widgetName, function(event) {
|
||||||
if(self._preventClickEvent) {
|
if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
|
||||||
self._preventClickEvent = false;
|
$.removeData(event.target, self.widgetName + '.preventClickEvent');
|
||||||
event.stopImmediatePropagation();
|
event.stopImmediatePropagation();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -118,7 +118,11 @@ $.widget("ui.mouse", {
|
|||||||
|
|
||||||
if (this._mouseStarted) {
|
if (this._mouseStarted) {
|
||||||
this._mouseStarted = false;
|
this._mouseStarted = false;
|
||||||
this._preventClickEvent = (event.target == this._mouseDownEvent.target);
|
|
||||||
|
if (event.target == this._mouseDownEvent.target) {
|
||||||
|
$.data(event.target, this.widgetName + '.preventClickEvent', true);
|
||||||
|
}
|
||||||
|
|
||||||
this._mouseStop(event);
|
this._mouseStop(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user