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

JavaScript Discussion :

Menu et class parente.


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Menu et class parente.
    Bonjour à tous, je sollicite votre aide pour un soucis je pense pas trop difficile mais qui pour mon niveau en JS est mission impossible.

    Le menu en question

    Mon menu est donc divisé en 4 fichiers ou vous pourrez trouver le code :
    - index.html
    - nimenu.css
    - nimenu.js
    - jquery-1.4.2.min.js

    Il faut cliquer sur un élément du menu pour dérouler les sous-menus.

    Le problème étant que j'aimerais qu'un menu sois automatiquement déroulé si la classe :
    - <li class="current_page_item"> est trouvé.

    Sur le site j'ai mis le sous-menu Test 4.3 avec cette fameuse classe.
    J'aimerais donc qu'au chargement de la page Test 4 sois développé.

    J'espère avoir été assez clair ne connaissant pas vraiment le langage technique.

    Merci par avance pour votre aide

  2. #2
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    J'ai pas regardé ton code en détail, mais puisque tu utilises du jQuery, tu pourrai rajouter dans ton jQuery().ready :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("li.current_page_item").click()

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Merci pour la réponse malheureusement ça ne fonctionne pas.

  4. #4
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    Ca fonctionne chez moi : mais c'est parce que le "class='current_page_item'" n'est pas au bon endroit.

    j'ai mis cette class sur le li de ton "Test 4" et pas sur delui de ton "Test 4.3". De plus il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('li.current_page_item a').click();
    J'avais oublié le "a" car je n'avais par regardé en détail.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    En fait il est bien placé, c'est un menu wordpress à la base qui d'ailleurs est codé exactement de la même façon sous Drupal.

    Le current_page_item peut se trouver sur un menu ou un sous-menu étant donné qu'à la base ça sert à le mettre en surbrillance comparé aux autres liens pour bien voir qu'on se situe sur cette page.

    C'est assez casse tête

  6. #6
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    Non, c'est pas tellement casse tête, il suffit juste d'aller chercher le menu parent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('li.current_page_item').parents('li').find('a:eq(0)').click();
    En jQuery, rien n'est compliqué. On peut accéder à tous les éléments d'une page en une seule ligne de code.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Merci Barsy de t'occuper de mon cas par contre ça ne marche pas non plus.
    Je ne comprend pas comment avec .clic à la fin de ton exemple ça peut dérouler automatiquement le menu au chargement de la page.

    Alors par contre une chose, je m'en rend compte que maintenant malheureusement mais ça devrait bien nous aider.

    Lorsque je me trouve dans un menu principal le <li> est en :
    <li class="current_page_item">

    Lorsque je me trouve dans un sous-menu :
    le <li> du menu principal est en :
    <li class="current_page_ancestor current_page_parent">

    et le <li> du sous-menu est en :
    <li class="current_page_item">

  8. #8
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 279
    Points
    5 279
    Par défaut
    Pourtant, j'ai essayé mon code sur les sources que tu donnes dans ton premier post est ça fonctionne très bien :

    Si tu veux, voici le fichier nimenu.js avec ma modif :

    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
    /*
    Basé sur Simple JQuery menu de Marco van Hylckama Vlieg
    Web: http://www.i-marco.nl/weblog/
    */
     
    jQuery().ready(function() {
      $('ul.nimenu ul').hide();
      $.each($('ul.nimenu'), function(){
        $('#' + this.id + '.expandfirst ul:first').show();
      });
      $('ul.nimenu li a').click(
        function() {
          var checkElement = $(this).next();
          var parent = this.parentNode.parentNode.id;
          if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
            $('#' + parent + ' ul:visible').slideUp('normal');
            checkElement.slideDown('normal');
            return false;
          }
        }
      );
      $('li.current_page_item').parents('li').find('a:eq(0)').click();
    });
    Le click() va juste simuler un événement click sur le menu en question. Ce qui va le dérouler.
    Un autre moyen aurait été de faire un .show() sur le menu en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('li.current_page_item').parents('li').find('ul').show();
    Les deux ne changent pas vraiment grand chose. mais je préfère le .click() car il va vraiment exécuter la fonction click() que tu as défini si dessus et si tu dois effectuer d'autres action avec ton click, ils s'exécuteront aussi au chargement de ta page.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Désolé pour la réponse tardive.
    Ça fonctionne impeccablement !
    Je te remercie grandement

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

Discussions similaires

  1. Récupérer la classe parente
    Par jagboys dans le forum MFC
    Réponses: 3
    Dernier message: 15/07/2006, 00h06
  2. this et classe "parent"
    Par TabrisLeFol dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2006, 13h42
  3. [POO]héritage du constructeur de la classe parente
    Par new_wave dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2006, 14h25
  4. Réponses: 3
    Dernier message: 09/02/2006, 17h01
  5. Conception d'une classe parente
    Par VincentB dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2003, 17h28

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