Tôi đã gặp vấn đề tương tự và đã thử nhiều cách tiếp cận nhưng không có cách nào phù hợp với tôi.
Giải pháp 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
không làm gì cho tôi. Mục đang được nhấp sau khi kéo xong.
Giải pháp 2 (của Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Điều này hoạt động tốt nhưng không thành công trong một trường hợp - khi tôi chuyển sang chế độ toàn màn hình khi nhấp chuột:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Giải pháp 3 (bởi Sasha Yanovets)
$('.item').draggable({
start: function(event, ui) {
ui.helper.bind("click.prevent",
function(event) { event.preventDefault(); });
},
stop: function(event, ui) {
setTimeout(function(){ui.helper.unbind("click.prevent");}, 300);
}
})
Điều này không làm việc cho tôi.
Giải pháp 4- giải pháp duy nhất hoạt động tốt
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
Đúng vậy - đúng thứ tự thực hiện thủ thuật - trước tiên bạn cần phải ràng buộc draggable () sau đó nhấp vào sự kiện (). Ngay cả khi tôi đặt mã chuyển đổi toàn màn hình trong sự kiện click (), nó vẫn không chuyển sang chế độ toàn màn hình khi kéo. Hoàn hảo cho tôi!