Angenommen, Sie haben einen Code wie diesen:
<html>
<head>
</head>
<body>
<div id="parentDiv" onclick="alert('parentDiv');">
<div id="childDiv" onclick="alert('childDiv');">
</div>
</div>
</body>
</html>
Ich möchte das parentDiv
Klickereignis nicht auslösen , wenn ich auf " childDiv
Wie kann ich das tun?" Klicke.
Aktualisiert
Wie ist auch die Ausführungsreihenfolge dieser beiden Ereignisse?
javascript
jquery
dhtml
Joe.wang
quelle
quelle
Antworten:
Sie müssen event.stopPropagation () verwenden
Live-Demo
$('#childDiv').click(function(event){ event.stopPropagation(); alert(event.target.id); });
event.stopPropagation ()
quelle
Ohne jQuery: DEMO
<div id="parentDiv" onclick="alert('parentDiv');"> <div id="childDiv" onclick="alert('childDiv');event.cancelBubble=true;"> AAA </div> </div>
quelle
Ich stand vor dem gleichen Problem und löste es mit dieser Methode. 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"); }
quelle
Die
stopPropagation()
Methode stoppt das Sprudeln eines Ereignisses zu übergeordneten Elementen und verhindert, dass übergeordnete Handler über das Ereignis benachrichtigt werden.Mit der Methode können Sie feststellen
event.isPropagationStopped()
, ob diese Methode jemals aufgerufen wurde (für dieses Ereignisobjekt).Syntax:
Hier ist die einfache Syntax zur Verwendung dieser Methode:
Beispiel:
$("div").click(function(event) { alert("This is : " + $(this).prop('id')); // Comment the following to see the difference event.stopPropagation(); });
quelle
Klickereignis Blasen , was nun mit Sprudeln gemeint ist, ist hier ein guter Ausgangspunkt . Sie können verwenden
event.stopPropagation()
, wenn Sie nicht möchten, dass sich dieses Ereignis weiter ausbreitet.Auch ein guter Link, um auf MDN zu verweisen
quelle