Élément enfant clic déclencheur de l'événement parent clic événement

dites que vous avez un code comme celui-ci:

<html>
<head>
</head>
<body>
   <div id="parentDiv" onclick="alert('parentDiv');">
       <div id="childDiv" onclick="alert('childDiv');">
       </div>   
    </div>
</body>
</html>​

Je ne veux pas déclencher l'événement de clic parentDiv quand je clique sur le childDiv , Comment puis-je faire cela?

mise à Jour

Aussi, quelle est la séquence d'exécution de ces deux cas?

46
demandé sur CDspace 2012-12-20 10:51:51

5 réponses

vous devez utiliser événement.arrêt de la production ()

Live Demo

$('#parentDiv').click(function(event){
    event.stopPropagation();
    alert(event.target.id);
});​

de l'événement.arrêt de la production ()

Description: empêche l'événement de bouillonner dans L'arbre généalogique, empêcher les parents manipulateurs d'être informés de l'événement.

54
répondu Adil 2015-09-07 11:56:34

Sans jQuery : DÉMO

 <div id="parentDiv" onclick="alert('parentDiv');">
   <div id="childDiv" onclick="alert('childDiv');event.cancelBubble=true;">
     AAA
   </div>   
</div>
16
répondu Akhil Sekharan 2012-12-20 06:55:27

la méthode stopPropagation() arrête le bouillonnement d'un événement vers les éléments parents, empêchant tout gestionnaire parent d'être avisé de l'événement.

vous pouvez utiliser la méthode event.isPropagationStopped() pour savoir si cette méthode a jamais été appelée (sur cet objet d'événement).

syntaxe:

Voici la syntaxe simple pour utiliser cette méthode:

event.stopPropagation() 

exemple:

$("div").click(function(event) {
    alert("This is : " + $(this).prop('id'));

    // Comment the following to see the difference
    event.stopPropagation();
});​
6
répondu palaѕн 2012-12-20 06:56:53

j'ai fait face au même problème et le résoudre par cette méthode. html:

<div id="parentDiv">
   <div id="childDiv">
     AAA
   </div>
    BBBB
</div>

JS:

$(document).ready(function(){
 $("#parentDiv").click(function(e){
   if(e.target.id=="childDiv"){
     childEvent();
   } else {
     parentEvent();
   }
 });
});

function childEvent(){
    alert("child event");
}

function parentEvent(){
    alert("paren event");
}
5
répondu Kamuran Sönecek 2015-11-23 12:35:08

Click event Bubbles , maintenant ce que l'on entend par bulles, un bon point de départ est ici . vous pouvez utiliser event.stopPropagation() , si vous ne voulez pas que cet événement se propage plus loin.

également un bon lien pour se référer à MDN

3
répondu Pranav 2017-05-23 11:47:26