TL; DRHTML5 trascinare e rilasciare elemento sopra div con Hammer.js eventi di trascinamento
voglio utilizzare HTML5 drag and drop di un elemento ad un contenitore con trascinare gli eventi Hammer.js. Tuttavia, ci sono conflitti.
Descrizione dettagliata:
Come presentato nella figura allegata, ho due contenitori:
- sinistra: contenitore con elementi trascinabili
- destra: contenitore con il martello. eventi js, ovvero trascina, trascina e trascina.
voglio trascinare gli elementi dal contenitore di sinistra alla quella giusta. Tuttavia, durante il trascinamento, quando si entra nel contenitore giusto, viene attivato l'evento dragstart Hammer.js. Dopo aver rilasciato l'elemento, applico l'evento di trascinamento sul contenitore giusto. Tuttavia, l'evento di trascinamento Hammer.js è attivato e considera il deltaX e il deltaY dall'evento dragstart precedente.
Hammer.js viene utilizzato con preventDefault: true:
Hammer(this.container, {preventDefault: true}).on('dragstart', function (event) { ... }
Ho già usato event.preventDefault() e event.stopPropagation() sul dragstart dell'elemento trascinato, senza successo.
Ho anche parzialmente risolto il problema. Nell'evento dragstart del contenitore Hammer.js, ho aggiunto la seguente verifica, per verificare se l'elemento source e il target sono gli stessi. Tuttavia, il trascinamento nel contenitore di destra funziona solo sulla seconda azione, poiché il primo viene ignorato.
if (event.gesture.startEvent.srcEvent.srcElement != event.gesture.target) {
return false;
}
Qualche idea su come evitare gli eventi di Hammer.js durante il trascinamento di elementi utilizzando l'API di trascinamento e rilascio HTML5?
Desidero utilizzare le bandiere come ultima risorsa, poiché gli eventi Hammer.js devono essere sviluppati da terze parti.
Grazie per il vostro aiuto.
hai già trovato la soluzione? –