ฉันมีปัญหาเดียวกันและลองใช้หลายวิธี แต่ก็ไม่มีอะไรได้ผลสำหรับฉัน
แนวทางแก้ไข 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
ไม่ทำอะไรให้ฉัน รายการจะถูกคลิกหลังจากการลากเสร็จสิ้น
โซลูชันที่ 2 (โดย Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
สิ่งนี้ใช้งานได้ดี แต่ล้มเหลวในกรณีเดียว - เมื่อฉันเปิดเต็มหน้าจอคลิก:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
โซลูชันที่ 3 (โดย 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);
}
})
สิ่งนี้ไม่ได้ผลสำหรับฉัน
โซลูชันที่ 4- วิธีเดียวที่ใช้งานได้ดี
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
ใช่นั่นคือคำสั่งที่ถูกต้องทำเคล็ดลับก่อนอื่นคุณต้องผูกเหตุการณ์ draggable () จากนั้นคลิก () แม้ว่าฉันจะใส่โค้ดสลับแบบเต็มหน้าจอในเหตุการณ์ click () แต่ก็ยังไม่เข้าสู่โหมดเต็มหน้าจอเมื่อลาก เหมาะสำหรับฉัน!