J'ai un divdélégation événement click simple ne fonctionne pas
<div class="myDiv">
<a href="#" class="myLink">somelink</a>
<div class="anotherDiv">somediv</div>
</div>
Maintenant, en utilisant la délégation de l'événement et le concept de bouillonnement, je voudrais intercepter les clics de l'un des myDiv, myLink et anotherDiv.
Selon les meilleures pratiques cela pourrait se faire en écoutant les clics à l'échelle mondiale (d'où le terme « délégation ») sur le document lui-même
$(document).click(function(e) {
var $eventElem = $(e.target);
var bStopDefaultClickAction = false;
if ($eventElem.is('.myDiv'))
{
alert('Never alerts when clicking on myLink or anotherDiv, why????');
bStopDefaultClickAction = true;
}
return bStopDefaultClickAction;
});
Voir ma question d'alerte ci-dessus. J'étais sous l'impression que les clics bulle. Et c'est un peu parce que le document reçoit mon clic et commence à déléguer. Mais le mécanisme de bulles pour les clics sur myLink et anotherDiv ne semble pas fonctionner car l'instruction if ne démarre pas.
Ou est-ce comme ceci: les clics ne font qu'un seul mouvement, de l'élément src cliqué à objet de délégation affecté (dans ce cas, le document)? Si tel est le cas, alors je dois gérer la délégation comme ceci:
$('.myDiv').click(function(e) {
//...as before
});
Mais ce genre de defeates l'usage de la délégation que je dois maintenant avoir beaucoup de gestionnaires « myDiv » et peut-être d'autres ... il est mort facile d'avoir juste un objet de délégation d'événement 'document'.
Quelqu'un sait comment cela fonctionne?
Je crois que vous devez faire 'var $ eventElem = $ (e.target);' pour pour le contrôle ci-dessous pour travailler. –
Ce n'est pas vraiment une partie du problème car j'ai écrit ceci de mémoire, mais je l'ai édité maintenant. – Tommy
Je pense que votre compréhension est légèrement éteinte. Je pense que vous croyez qu'il devrait invoquer un clic pour chaque élément. Vous n'obtiendrez qu'un seul événement de clic à chaque niveau de hiérarchie dans le dom. Essayez d'ajouter un gestionnaire de clic pour le div mydiv également. Vous verrez cet événement déclenché d'abord, puis le gestionnaire de clic de document, mais la cible est toujours la même. – redsquare