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 :

Comment conserver le sous-menu visible lorsque je clique sur un lien ?


Sujet :

jQuery

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment conserver le sous-menu visible lorsque je clique sur un lien ?
    Bonjour à tous,
    j'ai un petit script qui gère l'affichage d'un sous menu en jQuery.
    Est-il possible que lorsque je clique sur le lien d'un sous titre, le sous-menu reste visible.
    merci

    Vous pouvez voir un exemple à cette adresse :
    http://www.delbaretbelda.com/index.php

    mon menu est construit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul>
       <li>Titre rubrique
       <ul>
          <li>Sous-titre 1</li>
          <li>Sous-titre 2</li>
       </ul>
       </li>
    </ul>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script type="text/javascript">
        $(document).ready(function() {
            var sMenu = "ul.sMenu";
            $(sMenu).hide();
            $("li.btRubrique a").click(function() {
                if($(this).next().is(":visible") == false) {        
                    $(sMenu).slideUp();
                    $(this).next().slideDown();
                }
            }); 
        });
    </script>

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    La solution n'est pas triviale, il faut stopper l'événement « click » sur les liens « a.page », créer un événement personnalisé et le traiter.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8"/>
    	<meta name="Author" content="Daniel Hagnoul" />
    	<title>Page type</title>
    	<style>		
    		body {
    			background-color:#dcdcdc;
    			color:#000000;
    			font-family:sans-serif;
    			font-size:medium;
    			font-style:normal;
    			font-weight:normal;
    			line-height:normal;
    			letter-spacing:normal;
    		}
    		h1,h2,h3,h4,h5 {
    			font-family: "Bitstream Vera Serif Bold", serif;
    		}
    		div,p,h1,h2,h3,h4,h5,h6,ul,ol,dl,form,table,img {
    			margin:0px;
    			padding:0px;
    		}
    		p {
    			padding:6px;
    		}
    		ul,ol,dl {
    			list-style:none;
    			padding-left:6px;
    			padding-top:6px;
    		}
    		li {
    			padding-bottom:6px;
    		}
    		div#conteneur {
    			width:95%;
    			margin:12px auto;
    			padding:6px;
    			background-color:#FFFFFF;
    			color:#000000;
    			border:1px solid #666666;
    			font-size:0.8em;
    		}		
    		div#affiche {
    			margin:12px;
    			padding:6px;
    			border:1px solid #999999;
    			background-color:#FFFFFF;
    			color:#000000;
    		}
     
    		/* TEST */
    		.sMenu li {
    			width:200px;
    			height:60px;
    			border:1px solid gray;
    		}
    	</style>
    	<script charset="CP-1252" src="../lib/jquery-1.4.2.min.js"></script>
    	<script>
    		$(function(){
    			$("#conteneur").bind("changerPage.sMenu", function(event, lienVersPage) {
    				alert("L'utilisateur demande la page : " + lienVersPage);
    			});
     
    			$("ul.sMenu").hide();
     
    			$("li.btRubrique a").click(function(event){
    				if (!$(this).hasClass("page")){
    					if(!$(this).next("ul.sMenu").is(":visible")){
    						$("ul.sMenu").slideUp();
    						$(this).next("ul.sMenu").slideDown();
    					}
    				} else {
    					//event.preventDefault();  // le lien n'est plus actif !
    					$("#conteneur").trigger("changerPage.sMenu", [$(this).attr("href")]);
    					return false;	// le lien n'est plus actif et ne se propage plus !
    				}
    			});
     
    		});
    	</script>
    </head>
    <body>
    	<div id="conteneur">
    		<div id="menu"> 
    			<ul>
    				<li class="btRubrique">
    					<a href="#" title="L'entreprise">L'entreprise</a>
    					<ul class="sMenu" >
    						<li>
    							<a class="page" href="efface11.html" title="efface11">Historique de l'entreprise</a>
    						</li>
    						<li>
    							<a class="page" href="p2712, une invention géniale" title="Savoir">Savoir-faire et moyens</a>
    						</li>
    					</ul>
    				</li>
    				<li class="btRubrique">
    					<a href="#" title="Panneaux publicitaires">Panneaux publicitaires</a>
    					<ul class="sMenu" >
    						<li>
    							<a class="page" href="p7, introduction" title="Moyen">Vitrines</a>
    						</li>
    						<li>
    							<a class="page" href="p24, l'idée du siècle" title="Génial">Peinture</a>
    						</li>
    						<li>
    							<a class="page" href="http://danielhagnoul.developpez.com/" title="MonCaEx">Mon Cahier d'Exercices sur jQuery &amp; Co</a>
    						</li>
    					</ul>
    				</li>
    			</ul>
    		</div>
    	</div>
    </body>
    </html>

Discussions similaires

  1. afficher hyperlien dans mon site lorsque je clique sur le lien
    Par Richard80 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2011, 17h18
  2. Réponses: 7
    Dernier message: 15/02/2010, 22h07
  3. Réponses: 2
    Dernier message: 11/05/2007, 10h37
  4. Wxpython: Comment ajouter un sous-menu ?
    Par p_ping dans le forum wxPython
    Réponses: 2
    Dernier message: 20/06/2006, 10h04
  5. Réponses: 9
    Dernier message: 14/10/2003, 15h35

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