2 votes

stopPropagation ne fonctionne pas dans les éléments positionnés en absolu

J'ai un conteneur, il n'a pas d'élément enfant. Je veux juste ajouter un événement de clic à mon conteneur (#container). Pour cela, j'utilise cette fonction,

$(document).delegate("#container", 'click', function(e){
e.stopPropagation();
alert(this.tagName); // it show the "div", but i clicked on "a"
})

cela fonctionne bien. mais j'ai un nombre d'images et d'éléments 'a' absolument positionnés, mais si je clique sur l'image ou l'élément 'a', cela fonctionne comme un div de conteneur... comment puis-je éviter cela ? toute aide ?

0voto

Rocket Hazmat Points 87407

this le sera toujours #container car c'est l'élément auquel l'événement est "lié".

Essayez d'utiliser e.target au lieu de this . e.target sera toujours l'élément sur lequel l'événement a été déclenché, et this sera l'élément auquel il est "lié".

DEMO : http://jsfiddle.net/usmjr/2/

P.S. stopPropagation ne fonctionne pas avec .delegate parce que delegate fonctionne en propageant l'événement, donc vous ne pouvez pas arrêter la propagation. Vous pouvez demander à d'autres événements d'arrêter la propagation vers l'événement délégué, mais pas une fois que vous avez atteint l'événement délégué. http://api.jquery.com/delegate/#notes-0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X