Es scheint, dass das Drop-Ereignis nicht ausgelöst wird, wenn ich es erwarten würde.
Ich gehe davon aus, dass das Drop-Ereignis ausgelöst wird, wenn ein Element, das gezogen wird, über dem Zielelement freigegeben wird, aber dies scheint nicht der Fall zu sein.
Was missverstehe ich?
$('.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
Milder Flaum
quelle
quelle
Antworten:
Damit das Drop-Ereignis für ein div-Element auftritt, müssen Sie die Ereignisse
ondragenter
und abbrechenondragover
. Verwenden Sie jquery und Ihren Code ...Weitere Informationen finden Sie auf der MDN-Seite .
quelle
Sie können mit nur tun , eine weg
event.preventDefault()
auf derdragover
Veranstaltung. Dadurch wird dasdrop
Ereignis ausgelöst.quelle
Damit das Drop-Ereignis ausgelöst wird, müssen Sie während des Over-Ereignisses einen dropEffect zuweisen. Andernfalls wird das Ondrop-Ereignis niemals ausgelöst:
quelle
event.originalEvent.dataTransfer.dropEffect = "copy"
weil jQuery seine eigenen verwendetevent
Dies ist keine wirkliche Antwort, aber für einige Leute wie mich, denen die Disziplin für Beständigkeit fehlt. Drop hat für mich nicht in Chrom
effectAllowed
geschossen, als das nicht der Effekt war, den ich eingestellt hattedropEffect
. Bei Safari hat es jedoch bei mir funktioniert. Dies sollte wie folgt eingestellt werden:ev.dataTransfer.effectAllowed = 'move';
Alternativ
effectAllowed
kann als festgelegt werdenall
, aber ich würde es vorziehen, die Spezifität zu behalten, wo ich kann.für einen Fall, in dem der Drop-Effekt verschoben wird:
ev.dataTransfer.dropEffect = 'move';
quelle