J'ai deux tags de div, le premier div est le père et le deuxième div est fils à l'intérieur du père comme celui-ci et j'ai ajouté un événement (OnClick) à Div Père comme ceci p> Je veux quand je clique sur le Père Div met en œuvre l'événement, mais lorsque je clique sur le fils ne met rien en œuvre car il n'a aucun événement. P> p>
3 Réponses :
Vous pouvez transmettre l'événement comme l'un des arguments de la fonction code> CLOSTHERFATHER CODE>, puis vérifiez si la cible de l'événement est l'élément Père. Voir Cet exemple puis dans le HTML que vous avez juste besoin de Ajoutez l'argument de l'événement à la fonction JavaScript. P> <div id="father" onclick="closeFather(event)">
<div id="son"></div>
</div>
Ceci est en fait incorrect et ne fonctionne pas. Voir exemple
Étrange. Quel navigateur utilisez-vous? J'ai testé celui-ci rapidement et cela a bien fonctionné en chrome. Voir Cet exemple
@Connell Watkins - mais pas pratiquement
Qu'est-ce que vous voulez dire? Je suppose que vous avez plus de code que cela. Avez-vous d'autres divs à l'intérieur du Père que vous souhaitez réellement hériter de l'événement? Si vous voulez juste que l'événement ne se déclenche pas si le Fils est cliqué, vous pouvez utiliser si (e.target! = Document.getElementByID ('Son')) code>
@Connell Watkins - Ce code fonctionne avec les navigateurs modernes mais IE7, IE6 ne fonctionne pas
Je pense que c'est-à-dire que c'est utiliser E.Srelement plutôt que E.Target. Essayez si (((e.target || e.srelement) == Document.getElementByID ('Père')) code> à la place.
Son événement Boubelle. Partie centrale des événements DOM. Vous pouvez renvoyer false code> et empêcher sa bulle dans votre gestionnaire (
fermefather code>, mais vous devez transmettre l'événement à celui-ci) Si un événement déclenché par
Son code>. p>
Ceci est causé par un trait JavaScript appelé Boubillage d'événement . Par défaut, vos événements «bulles» dans le DOM.
Lorsque vous cliquez sur un nœud enfant, vous déclenchez automatiquement un événement de clic pour son (s) noeud parent. p>
Par défaut, lorsque vous cliquez sur un élément, Boubelle se produit de l'intérieur out: Ceci signifie que le début de l'événement Vous pouvez Click () CODE> , alors c'est le parent, etc. p>
<script language="javascript">
function parentHandler(e) {
alert('parent clicked');
};
function childHandler(e) {
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
alert('child clicked');
};
</script>
<div id="parent" onclick="parentHandler(event);">
Foo
<div id="child" onclick="childHandler(event)">
Bar
</div>
</div>
Le problème existe toujours dans votre exemple
Sachant que des événements, la bulle de l'intérieur est importante! Merci :)