ドロップイベントは私が期待するときにトリガーされていないようです。
ドラッグされている要素がターゲット要素の上にリリースされたときにドロップイベントが発生すると仮定しますが、そうではないようです。
私は何を誤解していますか?
$('.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');
})
Div要素でドロップイベントを発生させるには、ondragenter
およびondragover
イベントをキャンセルする必要があります。 jqueryと提供されたコードを使用して...
$('.drop').on('drop dragdrop',function(){
alert('dropped');
});
$('.drop').on('dragenter',function(event){
event.preventDefault();
$(this).html('drop now').css('background','blue');
})
$('.drop').on('dragleave',function(){
$(this).html('drop here').css('background','red');
})
$('.drop').on('dragover',function(event){
event.preventDefault();
})
詳細については、 MDNページ をご覧ください。
dragover
イベントでevent.preventDefault()
を実行するだけで済みます。これを行うと、drop
イベントが発生します。
Dropイベントを発生させるには、overイベント中にdropEffectを割り当てる必要があります。そうしないと、ondropイベントがトリガーされません。
$('.drop').on('dragover',function(event){
event.preventDefault();
event.dataTransfer.dropEffect = 'copy'; // required to enable drop on DIV
})
// Value for dropEffect can be one of: move, copy, link or none
// The mouse icon + behavior will change accordingly.