IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

evenement mouseout sur un div


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Par défaut evenement mouseout sur un div
    Bonjour, je cherche à appeler une fonction lorsque le pointeur sort d'un élément div. Je me sert donc de l'évènement 'onmouseout' mais le problème est que ce div contient d'autres div et que la fonction est appelé également lorsque la souris passe sur ces div internes. Voila une illustration de mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/dtD/xhtml1-strict.dtd">
    <html>
     <body>
      <div style="width:50px;height:50px;background-color:#FF0000;padding:25px;" onmouseout="javascript:alert('mouseout')">
       <div style="width:50px;height:50px;background-color:#00FF00;">&nbsp;</div>
      </div>
     </body>
    </html>
    ou le lien : http://84.97.22.247/Autres/D%E9velop.../mouseout.html

    J'aimerai que cette fonction soit appelée uniquement à la sortie du div rouge et sans passer par la bidouille du calcul de la position du curseur par rapport au div via document.onmousemove. Avez vous une idée?

  2. #2
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    C'est possible si tu gère un evenement dans le onmousein de ta div verte qui annulerait l'exécution du onmouseout de la div rouge (dans ce cas, il te faut une variable true/false)

  3. #3
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Par défaut
    Merci pour ta réponse.

    Hier soir j'ai trouvé ce code qui fonctionne, penses que le tien est plus adapté et plus simple ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/dtD/xhtml1-strict.dtd">
    <html>
     <head>
     <script>
     
     
    function eventmouseout(e) {
     
    	var el;
     
    	if (navigator.userAgent.indexOf("MSIE") != "-1") {
     
    		el = window.event.toElement;
     
    	} else if (e.relatedTarget != null) {
     
    		el = (e.relatedTarget.tagName ? e.relatedTarget : e.relatedTarget.parentNode);
     
    	}
     
    	if (getContainerWith(el, "DIV", "red") == null) {
     
    		alert("mouseout");
     
    	}
     
    }
     
     
    function getContainerWith(node, tagName, className) {
     
    	while (node != null) {
     
    		if (node.tagName != null && node.tagName == tagName && hasClassName(node, className)) {
     
    			return node;
     
    		}
     
    		node = node.parentNode;
     
    	}
     
    	return node;
     
    }
     
     
    function hasClassName(el, name) {
     
    	var i, list;
     
    	list = el.className.split(" ");
     
    	for (i = 0; i < list.length; i++) {
     
    		if (list[i] == name) {
     
    			return true;
     
    		}
     
    	}
     
    	return false;
     
    }
     
     
     </script>
     <head>
     <body>
      <div class="red" style="width:50px;height:50px;background-color:#FF0000;padding:25px;" onmouseout="javascript:eventmouseout(event)">
       <div class="green" style="width:50px;height:50px;background-color:#00FF00;">&nbsp;</div>
      </div>
     </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. evenement sur un div mis a jour avec ajax?
    Par adel25 dans le forum jQuery
    Réponses: 2
    Dernier message: 07/10/2013, 11h45
  2. Evenement sur une div qui ne fonctionne pas
    Par lateek35 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/05/2012, 22h09
  3. Evenement onload sur body et div
    Par Gregory.M dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/10/2008, 12h07
  4. [DOM] Evenement sur un div?
    Par maximus09 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/04/2008, 11h32
  5. [DOM] Pb gestion de l'évènement mouseout sur une <DIV>
    Par rvux69 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/01/2007, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo