menu deroulant jquery

TO LET OPINIONS , QUESTION , REQUEST or JUST FOR LET FRIENDLY MESSAGE

menu deroulant jquery

Postby jeanpaps on Tue May 06, 2008 7:55 pm

salut rad (de retour de province ??)

alors mon problème aujourd'hui est avec ce menu que j'ai mis en place pour le site d'un copain
http://css.alsacreations.com/xmedia/exemples/accordeon/menu_demo.html

le seul bémol c'est que mon pote a des aprioris sur la navigation :twisted: (ya toujours un truc qui cloche)
ou alors il est trop bête et j'arrête de lui rendre service :lol:

car tout marche très bien, (le open_at_load, des liens ancrés qu'il voulait, les couleurs perso...) le css est bien fait pour le modifier à sa guise
MAIS le click le gêne : c'est à dire que pour lui quand on clique ça doit ouvrir une page, j'ai donc modifier le "return false" du script est ça marche mais dans ce cas c'est idiot de mettre un menu déroulant !
bref j'ai cherché un compromis et en changeant le ".click" en ".mouseover" le sous-menu se déroule bien au passage de la souris mais il se referme quand on repasse sur le "même" menu (je sais pas si je suis clair :D )
or je voudrais qu'il se referme que SI on passe sur un AUTRE menu !! :roll:
est-il possible de modifier ça dans ce code au niveau des évènements
Code: Select all
$(document).ready( function () {
        // On cache les sous-menus
        // sauf celui qui porte la classe "open_at_load" :
        $("ul.subMenu:not('.open_at_load')").hide();
        // On selectionne tous les items de liste portant la classe "toggleSubMenu"
   
        // et on remplace l'element span qu'ils contiennent par un lien :
        $("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'evenement "click" sur les liens dans les items de liste
        // qui portent la classe "toggleSubMenu" :
        $("li.toggleSubMenu > a").click( function () {
            // Si le sous-menu etait deja ouvert, on le referme :
            if ($(this).next("ul.subMenu:visible").length != 0) {
                $(this).next("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
            }
            // Si le sous-menu est cache, on ferme les autres et on l'affiche :
            else {
                $("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
                $(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open") } );
            }
            // On empêche le navigateur de suivre le lien :
            return false;
        });
   
    } ) ;

mouais ... je pourrais mieux faire dans mes explications :?

merci rad si tu peux m'aider 8)
jean paps
User avatar
jeanpaps
 
Posts: 27
Joined: Thu Nov 29, 2007 12:09 pm

Re: menu deroulant jquery

Postby RAD on Sat May 10, 2008 11:20 am

SALUT jeanpaps

j ai pris le script alsacreations et je l ai modifie

le "click" par "mouseover" et le "slideUp" par "slideDown" 8)

$("li.toggleSubMenu > a").mouseover( function () {
// Si le sous-menu etait deja ouvert, on le referme pas :
if ($(this).next("ul.subMenu:visible").length != 0) {
$(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().removeClass("open") } );
}

Code: Select all
<!--
    $(document).ready( function () {
        // On cache les sous-menus
        // sauf celui qui porte la classe "open_at_load" :
        $("ul.subMenu:not('.open_at_load')").hide();
        // On selectionne tous les items de liste portant la classe "toggleSubMenu"
   
        // et on remplace l'element span qu'ils contiennent par un lien :
        $("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'evenement "click" sur les liens dans les items de liste
        // qui portent la classe "toggleSubMenu" :
        $("li.toggleSubMenu > a").mouseover( function () {
            // Si le sous-menu etait deja ouvert, on le referme :
            if ($(this).next("ul.subMenu:visible").length != 0) {
                $(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().removeClass("open") } );
            }
            // Si le sous-menu est cache, on ferme les autres et on l'affiche :
            else {
                $("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
                $(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open") } );
            }
            // On empêche le navigateur de suivre le lien :
            return false;
        });
   
    } ) ;
    // -->
    </script>


a+
RAD

Image La plus grande erreur que puisse faire un homme est d'avoir peur d'en faire une.
User avatar
RAD
Administrateur - Site Admin
 
Posts: 532
Joined: Thu Aug 31, 2006 12:02 am

Re: menu deroulant jquery

Postby jeanpaps on Sat May 10, 2008 3:35 pm

salut rad

merci beaucoup
et dire que je n'étais pas loin de trouver :evil: :mrgreen:

salut
paps
User avatar
jeanpaps
 
Posts: 27
Joined: Thu Nov 29, 2007 12:09 pm


Return to RAD ZONE FORUM

Who is online

Users browsing this forum: No registered users and 1 guest

cron