Parece que o evento drop não está sendo acionado quando eu esperava.
Presumo que o evento de soltar é acionado quando um elemento que está sendo arrastado é liberado acima do elemento de destino, mas não parece ser o caso.
O que estou entendendo 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
Fuzz suave
fonte
fonte
Respostas:
Para que o evento drop ocorra em um elemento div, você deve cancelar os eventos
ondragenter
eondragover
. Usando jquery e seu código fornecido ...Para obter mais informações, verifique a página MDN .
fonte
Você pode se safar apenas fazendo um comentário
event.preventDefault()
sobre odragover
evento. Isso irá disparar odrop
evento.fonte
Para que o evento drop seja disparado, você precisa atribuir um dropEffect durante o evento over, caso contrário, o evento ondrop nunca será disparado:
fonte
event.originalEvent.dataTransfer.dropEffect = "copy"
porque jQuery usa seu próprioevent
Esta não é uma resposta real, mas para algumas pessoas como eu, que não têm disciplina para consistência. A gota não disparou para mim em cromo quando
effectAllowed
o efeito que eu não tinha planejado não era o mesmodropEffect
. No entanto, funcionou para mim no Safari. Isso deve ser definido como abaixo:ev.dataTransfer.effectAllowed = 'move';
Alternativamente,
effectAllowed
pode ser definido comoall
, mas prefiro manter a especificidade onde puder.para um caso em que o efeito de queda é movido:
ev.dataTransfer.dropEffect = 'move';
fonte