У меня была та же проблема, и я пробовал несколько подходов, и ни один из них не помог мне.
Решение 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
ничего не делает для меня. По элементу щелкают после завершения перетаскивания.
Решение 2 (от Тома де Бура)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Это работает нормально, но не работает в одном случае - когда я переходил в полноэкранный режим onclick:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Решение 3 (Саша Яновец)
$('.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 (), он все равно не переходил в полноэкранный режим при перетаскивании. Отлично для меня!