jQuery événement dragenter est lancé à chaque enfant
J'ai lié dragenter
événement sur un objet qui contient certains enfants.
$(document).on('dragenter', '#container', function(e) {
console.log('dragenter');
});
Lorsque je me déplace avec fichier déposé autour d'eux, cet événement est déclenché à plusieurs reprises. Ce que j'ai prévu est de tir dragenter
uniquement lors de la saisie de #container
élément, et pas à chaque enfant.
Est-il le bon comportement? Comment puis-je l'empêcher?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez tester si l'élément qui a déclenché l'événement est le conteneur:
Ou si vous n'avez pas à utiliser l'événement de la délégation:
#container
est entièrement recouvert d'un de ses enfants ce test échoue toujours. N'est-il pas possible de ne pas lier les enfants avecdragend
- juste#container
?essayez d'ajouter stopPropagation
on
.Ma réponse à cette question est d'utiliser cas de la capture au lieu de remontée d'événements.
En un mot, l'événement de la capture "coule" à partir de l'élément extérieur, à la source de l'élément, ou jusqu'à ce
e.stopPropagation()
est appelé.Événement bouillonnant bulles d'événements à partir de la source de l'élément en place par les parents jusqu'à ce qu'il atteigne le document ou s'il est arrêté avec
e.stopPropagation()
.Donc, pour les appliquer à glisser entrez, vous voulez que l'extérieur de la div pour gérer l'événement, même si il est en fait à l'intérieur de la div qui génère l'événement.
Événement à l'aide de la capture de rendre le ondragenter feu dans la Div Extérieure avant à l'intérieur de la div. Dans le outter div gestionnaire d'événement, vous appeler.e.stopPropagation. Si l'intérieur de la div gestionnaire d'événement jamais réellement s'exécute.
Cette est comment faire pour utiliser jquery pour capturer l'événement:
Note le dernier paramètre.