Ich hatte das gleiche Problem und versuchte mehrere Ansätze und keiner funktionierte für mich.
Lösung 1
$('.item').click(function(e)
{
if ( $(this).is('.ui-draggable-dragging') ) return false;
});
tut nichts für mich Das Element wird angeklickt, nachdem das Ziehen abgeschlossen ist.
Lösung 2 (von Tom de Boer)
$('.item').draggable(
{
stop: function(event, ui)
{
$( event.originalEvent.target).one('click', function(e){ e.stopImmediatePropagation(); } );
}
});
Dies funktioniert einwandfrei, schlägt jedoch in einem Fall fehl - als ich auf Vollbild ging, klicken Sie auf:
var body = $('body')[0];
req = body.requestFullScreen || body.webkitRequestFullScreen || body.mozRequestFullScreen;
req.call(body);
Lösung 3 (von 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);
}
})
Das funktioniert bei mir nicht.
Lösung 4 - die einzige, die gut funktioniert hat
$('.item').draggable(
{
});
$('.item').click(function(e)
{
});
Ja, das ist es - die richtige Reihenfolge macht den Trick - zuerst müssen Sie draggable () binden und dann click (). Selbst wenn ich den Vollbild-Umschaltcode in click () eingefügt habe, wurde er beim Ziehen nicht in den Vollbildmodus verschoben. Perfekt für mich!