Ho avuto lo stesso problema e ho provato più approcci e nessuno ha funzionato per me.
Soluzione 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
non fa niente per me. Si fa clic sull'elemento al termine del trascinamento.
Soluzione 2 (di Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Funziona bene ma in un caso non funziona, quando stavo facendo clic a schermo intero:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Soluzione 3 (di 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);
}
})
Questo non funziona per me.
Soluzione 4 - l'unica che ha funzionato bene
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
Sì, questo è tutto, l'ordine corretto fa il trucco: prima devi associare trascinabile () quindi fare clic su (). Anche quando ho inserito il codice di commutazione a schermo intero nell'evento click (), non è ancora andato a schermo intero durante il trascinamento. Perfetto per me!