Il semble que l'événement drop ne se déclenche pas comme prévu.
Je suppose que l'événement drop est déclenché lorsqu'un élément en cours de glissement est des versions supérieures à l'élément cible, mais cela ne semble pas être le cas.
Qu'est-ce que je comprends 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');
})
Pour que l'événement drop se produise sur un élément div, vous devez annuler les événements ondragenter
et ondragover
. En utilisant jquery et votre code fourni ...
$('.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();
})
Pour plus d'informations, consultez la page MDN .
Vous pouvez vous contenter de faire une event.preventDefault()
sur l'événement dragover
. Cela déclenchera l'événement drop
.
Pour que l'événement drop se déclenche, vous devez affecter un dropEffect lors de l'événement over, sinon l'événement ondrop ne sera jamais déclenché:
$('.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.