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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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;
        });    
    } ) ;

  8. #8
    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 .

  9. #9
    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.

  10. #10
    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

  11. #11
    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!!

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