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 :

optimiser le code d'un menu


Sujet :

jQuery

  1. #1
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut optimiser le code d'un menu
    Bonjour,

    J'ai réaliser en m'aidant d'un script cet exemple de menu : http://www.gt-trophy.com/phpbb3/styl...st4_racing.htm

    J'aimerais pour des raisons pratiques convertir le script et utiliser jQuery (ce qui devrait me permettre d'enlever les bugs plus facilement ...)

    Je pense qu'il y a moyen de grandement optimiser le code en passant par jQuery

    Mais je galère, auriez vous des conseils, ou pourriez vous m'aider

    Je ne trouve pas l'équivalent des fonctions timeout

    Merci par avance

  2. #2
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Voila ce que j'ai fait :

    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
    <script language="JavaScript" type="text/javascript">
    var timeout    = 500;
    var closetimer = 0;
     
    function subnav_hide(){
    	for( var i = 1 ; i <= 4 ; i++ )
    	{
    		$("#subnav_0"+i).css("display","none");
    	}
    }
     
    function subnav_timer(){
    	closetimer = window.setTimeout(subnav_hide, timeout);
    }
     
    function subnav_canceltimer(){
    	if(closetimer)
    	{
    		window.clearTimeout(subnav_hide);
    		closetimer = null;
    	}
    }
     
    $(document).ready(function(){
     
    	$("#item_01").mouseover( function() {
    		subnav_canceltimer();
    		subnav_hide();
       		$("#subnav_01").css("display","block");
    	})
     
    	$("#item_01").mouseout( function() {
    		subnav_timer()	
    	})
     
    	$("#item_02").mouseover( function() {
    		subnav_canceltimer();
    		subnav_hide();
    		$("#subnav_02").css("display","block");
    	})
     
    });
    </script>
    Et l'HTML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        <div id="mainnav"> 
          <ul>
            <li id="item_01"><a href="#"><b>Accueil</b></a></li>
            <li id="item_02"><a href="#"><b>Forum</b></a></li>
            <li class="select"><a href="#"><u>Examples</u></a></li>
            <li><a href="#"><u>Menu</u></a></li>
            <li><a href="#"><b>Menu</b></a></li>
          </ul>
        </div>
        <div id="subnav">
    	<div id="subnav_01" style="display: none;"><ul class="subnav"><li><a href="#">Sub Menu 1</a></li><li><a href="#">Sub Menu 2</a></li><li><a href="#">Sub Menu 3</a></li><li><a href="#">Sub Menu 4</a></li></ul></div>
    	<div id="subnav_02" style="display: none;"><ul class="subnav"><li><a href="#">Sub Menu 1</a></li><li><a href="#">Sub Menu 2</a></li><li><a href="#">Sub Menu 3</a></li></ul></div>
    	</div>
    Doit y'avoir moyen de généraliser ça ? Mais comment ?

  3. #3
    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 : 74
    Localisation : Belgique

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

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

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $("ul.mainnav li").mouseenter(function(){
    	$("#subnav" + this.id.slice(4)).css("display","block");
    });
     
    $("ul.mainnav li").mouseleave(function(){
    	subnav_hide();
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre éclairé Avatar de dark_vidor
    Homme Profil pro
    Élève
    Inscrit en
    Janvier 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Élève

    Informations forums :
    Inscription : Janvier 2005
    Messages : 321
    Par défaut
    Ok

    J'ai implémenté ça ... mais ça fonctionne pas terrible avec les timeout

    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
    var current_subnav = 0;
    var timeout    = 500;
    var closetimer = 0;
     
    function subnav_hide(){
    	$("#subnav" + current_subnav ).css("display","none");
    }
     
    function subnav_timer(){
    	closetimer = window.setTimeout(subnav_hide, timeout);
    }
     
    function subnav_canceltimer(){
    	if(closetimer)
    	{
    		window.clearTimeout(subnav_hide);
    		closetimer = null;
    	}
    }
     
     
     
    $(document).ready(function(){
     
    	$("#mainnav ul li").mouseenter(function(){
    		subnav_canceltimer();
    		//subnav_hide();
    		current_subnav = this.id.slice(4);
    		$("#subnav" + current_subnav ).css("display","block");
     
    		$("#first").text( current_subnav );
    	});
     
    	$("#mainnav ul li").mouseleave(function(){
    		subnav_timer()
    		//subnav_hide();
    	});
     
    });
    J'ai pas trop d'idée, comment faire ?

  5. #5
    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 : 74
    Localisation : Belgique

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function subnav_canceltimer(){
    	if(closetimer)
    	{
    		window.clearTimeout(closetimer);
    		closetimer = null;
    	}
    }
    Hier, lorsque j'ai regardé votre code, je n'ai pas bien compris pourquoi il utilise un setTimeout, c'est pourquoi je ne l'ai pas utilisé dans mon exemple.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41
  2. Optimiser mon code ASP/HTML
    Par ahage4x4 dans le forum ASP
    Réponses: 7
    Dernier message: 30/05/2005, 10h29
  3. optimiser le code
    Par bibi2607 dans le forum ASP
    Réponses: 3
    Dernier message: 03/02/2005, 14h30
  4. syntaxe et optimisation de codes
    Par elitol dans le forum Langage SQL
    Réponses: 18
    Dernier message: 12/08/2004, 11h54
  5. optimisation du code et var globales
    Par tigrou2405 dans le forum ASP
    Réponses: 2
    Dernier message: 23/01/2004, 10h59

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