11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

j'ai un petit soucis sur un site internet que je souhaites créer. Je dois faire un menu en bas qui ouvre une grande div. Pour le moment, je pense avoir trouvé une petite solution mais qui reste toujours en réflexion car j'ai désormais un nouveau problème.
Je crée, pour le moment, une image qui, lorsque je passe ma souris dessus, je lance un javascript qui ouvre la balise div initialement en caché. Mais dès que je rajoute des éléments dans cette balise et que je passe ma souris, la balise div se referme (c'est triste Smiley bawling , je sais). Apparemment, le javascript détecte que je quitte la balise mais ce n'est pas le cas, savez-vous comment je peux palier au problème ? Voici mon code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Animated Drop Down Menu with jQuery</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jsfiles/jquery.js"></script>
<script type="text/javascript" src="jsfiles/jquery-ui-1.8.12.custom.min.js"></script>
<script type="text/javascript">


                     

 $(document).ready(function() {

    $("img.menu_head").mouseover(function(){
        $('div.menu_body').slideDown("normal"); 
		$('div.menu_body').show();
  });
		
        $("div.menu_body").mouseout(function(){
			$('div.menu_body').fadeOut("normal");
			$('div.menu_body').hide();
				})
  });
  
</script>
</head>

<body>
<div class="container">
<img src="images/navigate.png" width="184" height="32" class="menu_head" />
<div class="menu_body">
	<p>
		<a class="element1" href="#" style="text-decoration:none; color:#fff; ">C'est du contenu</a>
	</p>
	</div>
</div>
</body>
</html>




Merci pour votre aide.
Modifié par Javascripteur (24 May 2011 - 10:02)
Bonjour,

sans ton code CSS, nous ne pouvons absolument pas t'aider.

Peux-tu le poster s'il te plait voir mieux, nous donner une page en ligne ?
Modifié par n3k0 (23 May 2011 - 16:46)
Le css que j'importe n'impacte pas du tout le code, étant donnée qu'il est vide Smiley langue
J'avais oublié de l'enlever, je comprends que cela vous induisent en erreur.
Mille excuse.
Re,

un mouseleave() au lieu d'un mouseout() règle le soucis chez moi.

De plus :

$('div.menu_body').show(); et $('div.menu_body').hide(); ne servent à rien.
slideDown() et fadeOut() font déjà ces actions.
Smiley eek Wouhou, c'est exactement ça !

Cependant est ce que quelqu'un connait la différence entre le mouseout et le mouseleave, ceci fait sensiblement la même chose.

Je pense que mouseout prend en compte le p-index des éléments (dans mon cas la balise à était sur mon div)
Et que le mouseleave prend en compte la div complète.

Me trompe-je ?

En tout cas un grand merci ! Smiley biggrin
Bonjour,

content d'avoir pu t'aider, et ce que tu dis est à peu près juste :

a écrit :
mouseout
Fires when the user moves the mouse out of the element you registered the event on or one of its descendants.
mouseenter and mouseleave
Similar to mouseover and mouseout, but these events do not bubble.

Source


En gros, si tu mets un " mouseout " sur un élément, l’événement sera déclenché quand tu sortiras de cet élément ou de n'importe lequel de ses descendants.

Donc quand tu mets un mouseout sur ton div, l’événement est " bubblé " c'est à dire qu'il est en fait élargi à tout ses descendants. Si tu sors d'un descendant, l’événement sera déclenché sur le parent.

un petit [résolu] sur ton sujet ? Smiley cligne
Modifié par n3k0 (24 May 2011 - 09:55)
J'attendais une petite réponse avant de mettre un [Résolu].

Comme ça le sujet est bien expliqué et va surement aider pas mal de gens.

Un grand merci à toi et à alsacréations pour un contenu toujours riche et un forum très actif.

Merci et à la prochaine.