Tuve el mismo problema e intenté varios enfoques y ninguno funcionó para mí.
Solución 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
no hace nada por mi Se hace clic en el elemento después de que se realiza el arrastre.
Solución 2 (por Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Esto funciona bien, pero falla en un caso, cuando estaba en pantalla completa al hacer clic:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Solución 3 (por 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);
}
})
Esto no funciona para mi.
Solución 4- el único que funcionó bien
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
Sí, eso es todo, el orden correcto hace el truco, primero debe vincular el evento draggable () y luego hacer clic (). Incluso cuando puse el código de alternancia de pantalla completa en el evento click (), todavía no pasaba a pantalla completa al arrastrar. ¡Perfecto para mi!