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

jQuery Discussion :

Menu normal et menu déroulant


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut Menu normal et menu déroulant
    Bonjour,
    J'ai un menu avec plusieurs élements normal, et avec un seul élement avec des sous éléments.

    Je voudrais bien que quand je clique par exemple sur "sousMenu1" et j'affiche la page sousMenu1.php mes sous éléments restent afficher, c'est-à-dire que mon sous menu ne se referme pas, seulement si je clique sur un normal élément de menu par exemple sur "Element1". Comment je pourrais faire? Merci!

    Le code javascript:
    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
    $(document).ready( function () {
        $("#menu_left dt.sousMenu").hide();
        $("#menu_left dl.toggleSousMenu span").each( function () {
            var TexteSpan = $(this).text();
            $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ;
        } ) ;
        $("#menu_left dl.toggleSousMenu > a").click( function () {
            if ($(this).next("dt.sousMenu:visible").length != 0) {
                $(this).next("dt.sousMenu").slideUp("normal");
            }
            else {
                $("#menu_left dt.sousMenu").slideUp("normal");
                $(this).next("dt.sousMenu").slideDown("normal");
            }
            return false;
        });    
    } ) ;
    Mon menu:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <dt>                                                     
        <dl><a href="elemen1.php">Element1</a></dl>
        <dl><a href="element2.php">Element2</a></dl>
            <dl class="toggleSousMenu"><span>Sous Menu</span>
    	   <dt class="sousMenu">
    		<dl class="active"><a href="sousMenu1.php" title="sousMenu1">sousMenu1</a></dl>
    	           <dl><a href="sousMenu2.php" title="sousMenu2">sousMenu2</a></dl>
    	            <dl><a href="sousMenu3.php" title="sousMenu3">sousMenu3</a></dl>
    	   </dt>
    	</dl>
    	<dl><a href="element3.php">Element3</a></dl>
    	<dl><a href="element4.php">Element4</a></dl>

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    il faut faire un test pour connaitre qu'elle est la page courante et ouvrir le menu correspondant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Je n'ai pas compris qu'est-ce que je devrais faire... Quel test? Est-ce que tu pourrais m'expliquer? Merci!

  4. #4
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    chaque élement A (<a href=...) du menu correspond a une page !

    donc une condition sur le "window.location" et sur les "href" permet de trouver qu'elle est la page courante, aprés il te suffit d'ouvrir le menu sur l’élément correspondant

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Merci, mais ça n'a rien changé malheureusement. La page est bien ouverte, mais le menu ne reste pas ouverte toujours pas... C'est le lien le site. Quand je clique sur recette et après tarte, recette se referme, mais je voudrais qu'il reste ouverte.... Et qu'il soit refermé quand je clique par exemple sur acceuil.

  6. #6
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    je vois pas le test sur le nom de la page
    ton cas est simple, tu n'as que 3 pages qui ouvre le menu > tarte.php/creme.php/chocolat.php
    test si la page courante (affiché dans le navigateur) est une des 3 et si c'est oui, alors ouvre ton menu

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Parce que j'ai fait le test en local! Merci je vais essayer donc comme ça.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    J'ai modifié le code, mais ça ne fonctionne pas, comme je suis débutant j'arrive pas trouver comment faire... Merci pour votre aide!

    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
    $(document).ready( function () {
        $("#menu_left dt.sousMenu").hide();
        $("#menu_left dl.toggleSousMenu span").each( function () {
            var TexteSpan = $(this).text();
            $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ;
        } ) ;
        $("#menu_left dl.toggleSousMenu > a").click( function () {
            if ($(this).next("dt.sousMenu:visible").length != 0) {
                $(this).next("dt.sousMenu").slideUp("normal");
     
            }
     
     
            else {
    			$(this).next("dt.sousMenu").slideDown("normal");
    		if(window.location.href='http://localhost/site2/tarte.php' == true){
    			 $("#menu_left dt.sousMenu").show();
    		}
    		if(window.location.href='http://localhost/site2/chocolat.php' == true){
    			 $("#menu_left dt.sousMenu").show();
    		}
    		if(window.location.href='http://localhost/site2/creme.php' == true){
    			 $("#menu_left dt.sousMenu").show();
    		}
     
     
            }
            return false;
        });    
    } ) ;

  9. #9
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    biggre
    tu as ajouté le code dans l'evenement "click"

    le code doit être exécuté a chaque chargement de page, il doit être hors du "click" mais dans le "ready", exemple :
    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
    $(document).ready(function() {
    	$("#menu_left dt.sousMenu").hide();
    	$("#menu_left dl.toggleSousMenu span").each(function() {
    		var TexteSpan = $(this).text();
    		$(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>');
    	});
    	$("#menu_left dl.toggleSousMenu > a").click(function() {
    		if ($(this).next("dt.sousMenu:visible").length != 0) {
    			$(this).next("dt.sousMenu").slideUp("normal");
    		}
    		return false;
    	});
    	$(this).next("dt.sousMenu").slideDown("normal");
    	if (window.location.href = 'http://localhost/site2/tarte.php' == true) {
    		$("#menu_left dt.sousMenu").show();
    	}
    	if (window.location.href = 'http://localhost/site2/chocolat.php' == true) {
    		$("#menu_left dt.sousMenu").show();
    	}
    	if (window.location.href = 'http://localhost/site2/creme.php' == true) {
    		$("#menu_left dt.sousMenu").show();
    	}
    });
    plutot que tester l'url en entier, tu pourrais faire ceci (ca sera moins chiant a chaque changement de serveur !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( window.location.href.indexOf('tarte.php') !== - 1 ){ // code a exxecuter

    je ne pense pas que l'utilisation des TAGs DT/ DL dans un menu soit une bonne chose, tu aurais pu te contenter de UL / Li .

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Merci, j'ai essayé ton exemple, et c'est bon, merci!

    Sauf que je crois que n'ai pas bien récuperer la page courrant, parce que quand je clique sur recette, il n'affiche pas le menu. En fait recette c'est un span... Comment je pourrais faire? Quand je tape dierctement par exemple tarte.php. La page s'affiche bien, et le menu reste ouvert tant que je suis dans le sous-menu.

  11. #11
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    faut mettre a jour ton site http://recettesgourmands.free.fr/ comme ca je peux facilement voir ce qui merdouille

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    C'est fait.

    C'est bon, j'ai trouvé moi-même! J'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).next("dt.sousMenu").slideDown("normal");
    avant le return false. Merci beaucoup pour ton aide!!

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    J'ai rouvert la discussion, parce que le script javascript pour mon sous-menu fonctionne très bien sous tous les navigateurs sauf IE, où mon sous-menu reouvre après tous les cliques sur un élément de menu. Comment je pourrais corriger ça? Voici le lien: http://recettesgourmands.free.fr/ Merci d'avance!

  14. #14
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    je viens de tester avec IE8 et le menu est bien fermé quand on clique sur les autres liens et ouvert quand on est dans recette ... tu as testé qu'elle version de IE ?

    c'est peut être pas le JS qui pose probleme mais les CSS, tu vas devoir faire des tests ...

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Oui, ça fonctionne. Ce qui ne fonctionne pas, c'est que quand je clique sur un autre élement de menu, par exemple sur connexion, le sous-menu s'ouvre et après tout de suite se referme.

  16. #16
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    arf ... rigolo comme comportement, c'est IE
    ok, je pense que IE est tellement lent que le temps entre le chargement de la page + lancement JS doit être le probleme.
    dans ce cas utilise des CSS pour fermer le menu et ouvre le avec le JS quand il le faut.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    J'ai essayé avec . Cela n'a fonctionne pas vraiment. Qu'est-ce que je pourrais mettre?

  18. #18
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    est plus adapté, "overflow:hidden" sert a cacher ce qui dépasse d'une boite

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 115
    Par défaut
    Merci, je l'ai mis, maintenant un peu mieux.

Discussions similaires

  1. Ajouter un menu et sous menu suite au menu popup Profile As
    Par kkt8 dans le forum Eclipse Platform
    Réponses: 7
    Dernier message: 12/04/2013, 14h57
  2. Menu fixe et contenu déroulant
    Par encorejeune dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 04/02/2009, 00h59
  3. Menu arborescent par listes déroulantes
    Par lokiw dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/01/2009, 10h44
  4. Barre de menu et sous-menu déroulant
    Par Ginko dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 04/07/2008, 07h08
  5. [menu]faire un menu déroulant
    Par Nadine dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/03/2005, 08h33

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