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 actif sur un élement caché


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut Menu actif sur un élement caché
    Bonjour à tous,
    Ca fait un gros moment que je m'arrache les cheveux sur ce problème et je me permets de poster le forum dans l'espoir d'avoir de l'aide. J'ai une site WEB qui se présente sous la forme d'un slider horizontal avec un menu fixe. Dans ce menu, j'ai des items qui sont cachés et qui correspondent à la continuité de l'élément -1 de l'item menu. Mon problème, c'est que quand je suis sur l'item caché je voudrais que l'élément parent reste highlighter.
    Par exemple, j'ai l'item home puis l'item home2 qui est caché. Home2 est la continuité de home. J'ai essayé de coder un truc mais ça me donne rien. J'ai également un fiddle pour mieux comprendre : http://jsfiddle.net/jarod51/WXm55/

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <div id="cssmenu">
    <ul id="list">
        <li id="item1"><a href="#home">Home</a></li>
        <li id="item2" class="hide"><a href="#home2"></a></li>
        <li id="item3"><a href="#newsletter">Newsletter</a></li>
        <li id="item4"><a href="#directions">Directions</a></li>
        <li id="item5"><a href="#directions2">Directions2</a></li>
        <li id="item6"><a href="#contact">Contact us</a></li>
        <li id="item7"><a href="#actor">actor</a></li>
        <li id="item8" class="hide"><a href="#actor2"></a></li>
        <li id="item9" class="hide"><a href="#actor3"></a></li>
        <li id="item10"><a href="#market">market</a></li>
        <li id="item11" class="hide"><a href="#market2"></a></li>
        <li id="item12" class="hide"><a href="#market3"></a></li>
        <li id="item13"><a href="#calendar">calendar</a></li>

    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
    $(function(){
    if( $("#item2").hasClass('active' ))
    {
      $("item1").addClass('active2');
    }
    if ( $('#item2').hasClass('') && $('item1').hasClass('active2' )) {
    $('#item1').removeClass('active2');
    }
     
     
        if($("item8").hasClass('active'))
        {
            $("item7").addClass('active2');
        }
    if ( $('#item8').hasClass('') && $('item7').hasClass('active2' ) && $('item9').hasClass('') {
    $('#item7').removeClass('active2');
    }
     
    });
     
    $(function () {
            var 
                animation = function ( href ) {
                    var 
                        name = "active",
                        element = $( "a[href='" + href + "']" );
     
                    $( "html, body" ).stop().animate( {
                        scrollLeft: $( href ).offset().left
                    }, 1200 );
     
                    element.closest( "ul" ).find( "li" ).removeClass( name );
                    element.parent().addClass( name );
                },
                menu = $( "#list" );
     
            animation( menu.find( "li" ).eq( 0 ).find( "> a" ).attr( "href" ) );
     
            $( "#cssmenu a" ).bind( "click", function( event ) {
                var target = $( this ).attr("href");
     
                animation( target );
     
                event.preventDefault();
            } );
     
            $( "#next, #prev" ).click( function ( event ) {
                var
                    positionActiveClass = menu.find( "> li.active" ).index(),
                    menuLength = menu.find( "> li" ).length - 1,
                    buttonId = $( this ).attr( "id" );
     
                if ( buttonId === "next" ) {
                    if ( positionActiveClass === ( menuLength ) ) {
                        newElementActiveClass = menu.find( "li" ).eq( 0 );
                        newPositionActiveClass = newElementActiveClass.find( "> a" ).attr( "href" );
     
                        animation( newPositionActiveClass );
                    } else {
                        newElementActiveClass = menu.find( "li" ).eq( positionActiveClass + 1 );
                        newPositionActiveClass = newElementActiveClass.find( "> a" ).attr( "href" );
     
                        animation( newPositionActiveClass );
                    }
                } else {
                    if ( positionActiveClass === 0 ) {
                        newElementActiveClass = menu.find( "li" ).eq( menuLength );
                        newPositionActiveClass = newElementActiveClass.find( "> a" ).attr( "href" );
     
                        animation( newPositionActiveClass );
                    } else {
                        newElementActiveClass = menu.find( "li" ).eq( positionActiveClass - 1 );
                        newPositionActiveClass = newElementActiveClass.find( "> a" ).attr( "href" );
     
                        animation( newPositionActiveClass );
                    }
                }
     
                event.preventDefault();
            } );
     
        } );

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    et la solution de la.lune ne te convient pas ? voir http://www.developpez.net/forums/d14...ant-precedent/.

    Au passage il aurait été tout à fait courtois de lui faire réponse .

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    Salut nosmoking,
    J'avais complètement zappé la réponse de la lune. Honte à moi.

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    En fait, mon problème est tout autre. Je voulais que mon menu rester actif sur item lorsque celui ci est une continuité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Récupérer le contrôle actif sur menu contextuel
    Par guen dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/11/2013, 09h43
  2. Affichage d'un menu contextuel pour un élement sur une carte Google map
    Par Invité dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 04/03/2011, 18h22
  3. Menu Inactif sur Internet et Actif en Intranet !
    Par size_one_1 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/12/2005, 09h15
  4. [VB6] menu contextuel sur clique droit souris
    Par da40 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/07/2003, 11h07
  5. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20

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