11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,

J'utilise la fonction toggle() mais rien ne se passe comme je le souhaiterais. Ca s'affiche mais disparaît une seconde après...

Est-ce que vous savez d'où celà pourrait venir ?

<div class="BarreDeMenu">
<div id="Liens">
<a href="" title="Accueil" id="MenuAccueil"></a>
</div>
<div id="Liens">
<a href="" title="Infos Pratiques" id="MenuInfos"></a>
</div>
</div>

<div class="BarreDeSousMenu">
<div id="BarreDeSousMenuInfos">
<div id="Liens">
<a href="" title="Infos Pratiques" id="MenuSousInfos"></a>
</div>
</div>
</div>


jQuery().ready(function() {

$("#MenuInfos").click(function() {
$("#BarreDeSousMenuInfos").toggle();
});

});


Mercii !!
Bonsoir,

C'est tout bête , MenuInfos est un lien, le comportement normal d'un lien c'est de diriger vers une autre page , quand l'attribut href n'est pas renseigné , c'est la même page qui se charge , donc l'effet a lieu, ta page se recharge, et revient à son état initial.

Donc l'idée c'est de bloquer le lien grace à un "return false;" à la fin de la fonction qui a lieu lors de l'evenement "click"

jQuery().ready(function() { 
 
$("#MenuInfos").click(function() { 
$("#BarreDeSousMenuInfos").toggle(); 
[b]return false;[/b]
}); 
 
});

Modifié par rs459 (30 Jan 2010 - 00:08)
Merci beaucoup.

Je me permets donc de revenir avec mon idée initiale qui était de faire mon menu avec slideUp et slideDown. Grâce à return:false, ça marche bien, seulement pour le faire disparaître, rien ne se passe...

jQuery().ready(function() {
	
	$("#BarreDeSousMenuInfos").hide();
	
	$("#MenuInfos").click(function() {
		if ($("#BarreDeSousMenuInfos").is(":visible")) {
			$("#BarreDeSousMenuInfos").slideUp("slow");
			return false;
		} else {
			$("#BarreDeSousMenuInfos").slideDown("slow");
			return false;
		}
	});
	
});
Je ne vois pas ou est le problème , chez moi ca marche.

Sinon tu peux faire plus simple et utiliser directement .slideToggle()

$().ready(function() {
$("#BarreDeSousMenuInfos").hide();

$("#MenuInfos").click(function() {
$("#BarreDeSousMenuInfos").slideToggle();
return false;
});
});