J'ai eu le même problème et j'ai essayé plusieurs approches et aucune n'a fonctionné pour moi.
Solution 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
ne fait rien pour moi. L'élément est cliqué une fois le glissement terminé.
Solution 2 (par Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Cela fonctionne très bien mais échoue dans un cas - lorsque j'allais en plein écran en cliquant sur:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Solution 3 (par 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);
}
})
Cela ne fonctionne pas pour moi.
Solution 4 - la seule qui a bien fonctionné
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
Oui, c'est tout - le bon ordre fait l'affaire - vous devez d'abord lier l'événement draggable () puis click (). Même lorsque j'ai mis du code de basculement en plein écran dans l'événement click (), il ne passait toujours pas en plein écran lors du glissement. Parfait pour moi!