Partage
  • Partager sur Facebook
  • Partager sur Twitter

afficher première image d'un menu déroulant vertical

    23 mars 2011 à 23:52:54

    bonjour,

    tout nouveau sur le forum duZéro, premier jour, premier post, :p

    donc j'ai un menu vertical accordéon (en javascript et css)
    et j'aimerais que la première image du menu s'affiche d'emblée quand on arrive sue la page.

    ça c'est le code du menu :

    <!-- 
    $(document).ready( function () { 
        // On cache les sous-menus : 
        $(".navigation ul.subMenu").hide(); 
        // On sélectionne tous les items de liste portant la classe "toggleSubMenu" 
     
        // et on remplace l'élément span qu'ils contiennent par un lien : 
        $(".navigation li.toggleSubMenu span").each( function () { 
            // On stocke le contenu du span : 
            var TexteSpan = $(this).text(); 
            $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ; 
        } ) ; 
     
        // On modifie l'évènement "click" sur les liens dans les items de liste 
        // qui portent la classe "toggleSubMenu" : 
        $(".navigation li.toggleSubMenu > a").click( function () { 
            // Si le sous-menu était déjà ouvert, on le referme : 
            if ($(this).next("ul.subMenu:visible").length != 0) { 
                $(this).next("ul.subMenu").slideUp("fast"); 
            } 
            // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
            else { 
                $(".navigation ul.subMenu").slideUp("fast"); 
                $(this).next("ul.subMenu").slideDown("normal"); 
            } 
            // On empêche le navigateur de suivre le lien : 
            return false; 
        });     
     
     
    } ) ; 
    // -->
    



    Ce que j'ai essayé de faire, c'est de créer une classe (appelée .visible) qui ne s'applique qu'à la première balise li du menu.
    donc dans mon css j'ai mis .visible{} sans rien dedans.

    et j'ai bidouillé une ligne en js : $(".visible").visible();

    que j'ai mis ici :


    $(document).ready( function () { 
        $(".visible").visible(); 
        // On cache les sous-menus : 
        $(".navigation ul.subMenu").hide(); 
        // On sélectionne tous les items de liste portant la classe "toggleSubMenu"
    


    donc en fonction de l'endroit où je le mets, soit ça bloque l'ouverture du menu, soit tous les onglets sont ouverts quand on arrive sur la page.

    j'en appelle à vos conseils éclairés pour me dire ce qu'il faut faire. j'avoue être assez hermétique au .js

    merci d'avance :)

    PS : quand on a du js en interne, est ce qu'il faut obligatoirement un fichier externe avec le même code ?
    • Partager sur Facebook
    • Partager sur Twitter
      23 mars 2011 à 23:57:32

      Ne faudrait-il pas plutôt écrire :

      $(".visible").show();
      

      jute après la ligne avec le hide() ?


      Si tu mets une ligne vide dans ton CSS, autant ne rien mettre ^^


      Concernant ton PS... non. Si ton JS est en interne, pas besoin de le mettre en externe... Et réciproquement.

      A noter que c'est mieux en externe, pour permettre la mise en cache, notamment ; et maintenir le code HTML propre et lisible, aussi.
      • Partager sur Facebook
      • Partager sur Twitter
        24 mars 2011 à 0:02:45

        merci pour ta réponse ;)

        je vais essayer ça tt de suite.

        j'ai mis une classe dans le css parce que dans le code du menu, certaines lignes se rapportent à d'autres classes du menu
        cf. .navigation ul.subMenu

        voilou, mais je vais essayer sans.

        merci encore

        EDIT : non ça marche pas. même avec une classe vide. mais je vais continuer à chercher
        • Partager sur Facebook
        • Partager sur Twitter

        afficher première image d'un menu déroulant vertical

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown