我遇到了同样的问题并尝试了多种方法,但没有一个对我有用。
解决方案 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() 事件。即使我将全屏切换代码放在 click() 事件中,拖动时它仍然没有进入全屏。非常适合我!