Parece que el evento de caída no se activa cuando esperaba.
Supongo que el evento de caída se activa cuando un elemento que se está arrastrando se libera por encima del elemento de destino, pero este no parece ser el caso.
¿Qué estoy entendiendo mal?
$('.drop').on('drop dragdrop',function(){
alert('dropped');
});
$('.drop').on('dragenter',function(){
$(this).html('drop now').css('background','blue');
})
$('.drop').on('dragleave',function(){
$(this).html('drop here').css('background','red');
})
javascript
jquery
events
drag-and-drop
jquery-events
Pelusa leve
fuente
fuente
Respuestas:
Para que el evento de caída ocurra en un elemento div, debe cancelar los eventos
ondragenter
yondragover
. Usando jquery y su código proporcionado ...Para obtener más información, consulte la página MDN .
fuente
Usted puede conseguir lejos con sólo hacer una
event.preventDefault()
en eldragover
evento. Hacer esto disparará eldrop
evento.fuente
Para que se active el evento de caída, debe asignar un efecto de caída durante el evento de finalización; de lo contrario, el evento de caída nunca se activará:
fuente
event.originalEvent.dataTransfer.dropEffect = "copy"
porque jQuery usa el suyo propioevent
Esta no es una respuesta real, pero para algunas personas como yo, que carecen de la disciplina para ser coherentes. La gota no se disparó para mí en cromo cuando
effectAllowed
el efecto no era el que me había propuestodropEffect
. Sin embargo, funcionó para mí en Safari. Esto debe establecerse como se muestra a continuación:ev.dataTransfer.effectAllowed = 'move';
Alternativamente,
effectAllowed
se puede establecer comoall
, pero preferiría mantener la especificidad donde pueda.para un caso en el que el efecto de caída se mueve:
ev.dataTransfer.dropEffect = 'move';
fuente