Sto lavorando a un'applicazione mobile in cui sto cercando di combinare la funzionalità trascinabile di jQuery UI con l'evento taphold di jQuery Mobile. L'idea è che un elemento diventa trascinabile quando viene eseguita una rastrelliera.Combinazione di jQuery Mobile taphold e jQuery UI draggable
Draggable viene inizializzato su elementi nel seguente codice:
$('div.rect', '#outerBox').draggable({
containment: "parent",
grid: [50, 50],
disabled: true,
stop: function(event, ui) {
$(this).draggable('disable');
$(this).removeClass('highlighted');
}
});
Come si può vedere la funzionalità è disabilitata trascinabile inizialmente, perché voglio per consentirle dopo un evento taphold. Per raggiungere questo obiettivo Attualmente sto usando il seguente codice:
// Bind long press event to rectangle elements
$('div.rect', '#outerBox').bind('taphold', function(event, ui) {
// Enable dragging on long press
$(this).addClass('highlighted');
$(this).draggable('enable');
});
Questo funziona, ma il problema è che un 'Release-e-tap-again'-evento è necessaria al fine di trascinare l'elemento attorno, invece di trascinamento direttamente dopo l'evento taphold. Potrebbe trattarsi di una sorta di problema di interferenza degli eventi? Ho provato cose come event.preventDefault()
ma la mia conoscenza degli eventi di jQuery non è molta quindi non ho idea se questo dovrebbe fare o meno alcuna differenza.
Qualche idea su come risolvere questo?
Il codice funziona perfettamente con jQuery Mobile 1.4.4 e versioni successive, non è necessario il trucco suggerito di seguito. –