Page 1 sur 1

Problème menu accordéon avec jQuery

Posté : 07 oct. 2010, 22:08
par djtec
Bonsoir,

Voilà je voudrais faire un menu accordéon mais il veut pas fonctionner lol.

Le principe c'est qu'il ferme les éléments ouvert pour ouvrir celui sur le quel on a cliqué.

Mais voilà moi le premier lien n'as pas de sous menu donc en faites c'est ça qui fait tout bugger chez moi car quand je clique pour faire apparaitre le sous-menu il s'ouvre mais il se referme direct. Par contre quand je fais en sorte que un sous menu soit ouvert au départ là magie ça fonctionne. Donc c'est que c'est mon premier lien qui fou le bordel car y a pas de sous menu.

Voici mon code html:
			<ul>
				<li class="active">
					<span><a href="">Accueil</a></span>
				</li>
			
				<li >
					<span>News</span>
					
					<ul>
						<li >
							<a href="">Voir toute les news</a>
						</li>
						<li >
							<a href="">Créer une news</a>
						</li>
						<li >
							<a href="">Gérer les catégories</a>
						</li>
						<li >
							<a href="">Gérer les commentaires</a>
						</li>
					</ul>
				</li>
				<li >
					<span>News</span>
					
					<ul>
						<li >
							<a href="">Voir toute les news</a>
						</li>
						<li >
							<a href="">Créer une news</a>
						</li>
						<li >
							<a href="">Gérer les catégories</a>
						</li>
						<li >
							<a href="">Gérer les commentaires</a>
						</li>
					</ul>
				</li>
</ul>
Et voici mon js:
	$('.sidebar .menu ul ul').hide();
	$('.sidebar .menu ul li.active ul').show();
	
	$('.sidebar .menu ul li span').css({'cursor' : 'pointer'});
	
	$('.sidebar .menu ul li').click(function () {
		if($(this).find("ul:visible").length != 0) { 
            $(this).find("ul").slideUp(150); 
        } else { 
            $(".sidebar .menu ul li ul").slideUp(150); 
            $(this).find("ul").slideDown(200); 
       }
       
       return false;
	});
Moi ça fait deux heures que je recherche et je trouve pas la solution donc je me remet à vos connaissance.

Merci d'avance...

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 17:12
par Cyrano
Je dis ça à l'arrache, mais j'explorerais le fait que dans ton else, tu sélectionnes tous les ul, du sous-menu. Essaye avec « not »
    $('.sidebar .menu ul ul').hide();
    $('.sidebar .menu ul li.active ul').show();
    $('.sidebar .menu ul li span').css({'cursor' : 'pointer'});
    $('.sidebar .menu ul li').click(function () 
    {
        if($(this).find("ul:visible").length !== 0) 
        {
            $(this).find("ul").slideUp(150);
        }
        else
        {
            $(".sidebar .menu ul li ul").slideUp(150);
            $(this).find("ul:not(:visible)").slideDown(200); // On ne sélection que si le UL n'est pas visible
        }
        return false;
    });
Sans garantie, j'ai pas testé.

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 19:48
par djtec
Même avec le not ça fonctionne toujours pas.

Le problème reste identique.

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 19:49
par Cyrano
C'est du code maison ou un plugin téléchargé ?

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 20:25
par djtec
C'est du code maison.

En faites j'aimerais juste qu'un sous-menu s'ouvre quand je clique et que ceux ouvert ce referme avant d'ouvrir l'autre.

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 20:31
par Cyrano

Re: Problème menu accordéon avec jQuery

Posté : 08 oct. 2010, 20:39
par djtec
C'est tout à fait ça merci Cyrano je vais prendre leur code.

Bonne soirée ++