/ / onMouseOut dans le père appelé quand onMouseOver dans l'enfant - javascript, html

onMouseOut dans le père appelé quand onMouseOver dans l'enfant - javascript, html

J'ai ce code:

http://jsfiddle.net/SXj2W/

<div id="father" style="width:50px; height:50px;overflow:hidden;" onMouseOut="alert("called");">
<div id="container" style="margin-top:0px;width:100%;height:100%;transition: margin 2s;">
<div style="width: 50px;height:50px;background-color:rgb(255,0,0);" onClick="document.getElementById("container").style.marginTop="-50px""></div>
<div style="width: 50px;height:50px;background-color:rgb(0,0,255);" onClick="document.getElementById("container").style.marginTop="0px""></div>
</div>
</div>

Si vous cliquez sur la boîte rouge, la boîte bleue apparaîtra du bas ... lorsque onMouseOver la boîte bleue est appelée, onMouseOut du père est appelée aussi ...

Connaissez-vous une solution de contournement pour ne pas voir l'alerte si la souris est toujours à l'intérieur de "père".

Réponses:

3 pour la réponse № 1

Voici un violon mis à jour avec un exemple de travail: http://jsfiddle.net/SXj2W/2/

Lorsque onmouseout est renvoyé, vous devez vérifier que la cible associée à l'événement n'est pas un élément enfant de votre parent DIV. Vous pouvez le faire en utilisant le code ci-dessous.

Ajoutez une fonction pour appeler au survol de votre page <HEAD>

function onMouseOut(self,event) {
var e = event.toElement || event.relatedTarget;
while(e && e.parentNode && e.parentNode != window) {
if (e.parentNode == self||  e == self) {
if(e.preventDefault) e.preventDefault();
return false;
}
e = e.parentNode;
}
alert("Mouseout on father");
}

Et puis mettez à jour votre div parent pour ressembler à:

<div id="father" style="width:50px; height:50px;overflow:hidden;" onmouseout="onMouseOut(this,event)">