11540 sujets

JavaScript, DOM et API Web HTML5

Hello à tous,
J'ai créé un petit js pour donner quelques effets à mon menu, mais le résultat n'est pas totalement satisfaisant.

Voici le site : http://www.arch-fs.fr/beta/

Prb : quand on va d'un menu à l'autre, il arrive que deux menus soit ouvert en même temps. Si je fais trop de mouvements de souris, le menu arrete pas de s'ouvrir et se fermer. Di coup, c'est un peu balo !! et j'ai du mal à optimiser mieux que ca.

Merci pour votre aide.

Voici le JS
$(document).ready(function () {
    
$("[id^='menu-item-']").children("ul.sub-menu").hide();
 
 $("[id^='menu-item-']").hover(
	function(){
		$("ul.sub-menu", this).toggle("slow");
	},
	function(){
		$("ul.sub-menu", this).stop(true, true).delay(2000).toggle("slow");
	}
);
     
           
});
Hello,

as-tu essayé un stop avant ton premier toggle ? En nettoyant la queue d'animations ça devrait plus coller à ton souhait.

Ju
De la même manière que tu fais :
$("ul.sub-menu", this).stop(true, true).delay(2000).toggle("slow");


Tu peux faire :
$("ul.sub-menu", this).stop(true, true).toggle("slow");


C'est ce qu'on appelle le chaînage (arrêtez moi si je dis une absurdité). Ça te permets d'enchaîner des fonctions les unes après les autres sur un même objet.
J'ia mis en place merci.
Mais pas réellement de changement, les comportements sont toujours un peu bizarre au survol de la souris principalement.
C'est le soucis des animations avec une durée - des animations quoi - utilisées avec Toggle. Quand tu la stoppe entre 2 états c'est au petit bonheur la chance.

2 options :

* au lieu de faire un toggle, tu choisis d'afficher ou de masquer le menu (selon son état actuel)
* tu supprime le slow & fais tout en insantané

A toi de voir Smiley smile
Modifié par JulienFouquet (14 Feb 2013 - 16:44)