Partage
  • Partager sur Facebook
  • Partager sur Twitter

Savoir sur quel element on se trouve

jQuery

    6 juin 2009 à 14:38:26

    Bonjour,

    Je cherche à faire une fonction avec jQuery pour un affichage dynamique de mon menu.

    Voici le code html de mon menu :
    <ul id="menu">
    	<li>Element1</li>
    	<li>Element2</li>
    	...
    	<li>ElementN</li>
    </ul>
    


    Je souhaiterai, lorsque je positionne mon curseur sur l'element numero N que celui-ci change de style (par exemple, pour l'evenement mouseOver sur l'element 2, color = #fff) mais je ne sais pas comment m'y prendre pour une liste avec un nombre indéterminé d'elements ?

    Merci à vous pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      6 juin 2009 à 14:44:33

      Salut, pour faire ça, tu n'as aps besoin de Javascript. Il te suffie de modifier ton code css en rajoutant une partie avec la balise :
      #menu li:hover
      • Partager sur Facebook
      • Partager sur Twitter
        6 juin 2009 à 14:45:07

        Salut,
        $('#menu li').hover(function(){
          // quand la souris rentre
          $(this).css('color','#fff');  // police blanche
        },function(){
          // quand la souris sort
          $(this).css('color','#000'); // police noir
        });
        


        @zebrure : :hover sur autre chose que des liens n'est pas disponible sous IE.
        • Partager sur Facebook
        • Partager sur Twitter
          6 juin 2009 à 14:51:26

          Dans ce cas là je crois que focus peut la remplacée, il faut donc mettre :
          #menu li:hover, #menu li:focus
          dans le css
          • Partager sur Facebook
          • Partager sur Twitter
            6 juin 2009 à 14:52:27

            J'avais pris ça comme exemple simple... mais en fait c'était un peu trop simple xD
            Je voudrais savoir s'il est possible de savoir sur quel élément on se situe ?

            En fait je souhaite faire "slider" une image en dessous de l'élément sur lequel ma souris est positionné et j'ai donc besoin de savoir sur quel élément je me situe...

            Rien de vaut un bon petit dessin :

            Image utilisateur

            <img src="imageSlide" />
            <ul id="menu">
              <li>Element1</li>
              <li>Element2</li>
                ...
              <li>ElementN</li>
            </ul>
            
            • Partager sur Facebook
            • Partager sur Twitter
              6 juin 2009 à 14:54:00

              Tu vux que l'image soit différente pour chaque élément ou que ce soit la même ?
              • Partager sur Facebook
              • Partager sur Twitter
                6 juin 2009 à 14:59:19

                Pas de problème :) .
                <ul id="menu">
                  <li>Element1 <img src="image1" /></li>
                  <li>Element2 <img src="image1" /></li>
                    ...
                  <li>ElementN <img src="imageN" /></li>
                </ul>
                

                $(function(){
                
                $('#menu li img').hide();
                
                $('#menu li')
                  .mouseenter(function(){
                    $('img',this).slideDown('fast');
                  })
                  .mouseleave(function(){
                    $('img',this).slideUp('fast');
                  });
                
                });
                
                Il est préférable que les images aient les mêmes dimensions :-° .

                Tu as aussi les menus Fisheye et les menus accordéons si c'est ce que tu cherche..
                • Partager sur Facebook
                • Partager sur Twitter
                  6 juin 2009 à 15:05:33

                  Je maintiens qu'un #menu li:hover, #menu li:focus srait le plus rapide et le plus ismple,je te conseille de relir cette page sur le tuto du CSS
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 juin 2009 à 15:07:04

                    Non justement, je compte rajouter des effets jQuery ;) donc inutilisable
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 juin 2009 à 15:22:38

                      C'est à dire à glisser ? L'image sur laquelle on pointe prendra toute la place :o ?
                      Si tu veux savoir c'est quel élément de la liste sur lequel on est, suffit de leur mettre un id et de le récupérer avec .attr('id')
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 juin 2009 à 15:27:59

                        Lorsque je pointe ma souris sur l'element <li>, l'image viendra se glisser en dessous (position absolute)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 juin 2009 à 15:39:06

                          Donc les images ne sont pas contenues chacune dans un élément de la liste #menu ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 juin 2009 à 15:54:51

                            l'image ! il n'y a qu'une image qui est slider, toujours la meme.
                            Comme on voit sur le dessin que j'ai fais au dessus, lorsque je survole l'element bleu, je souhaiterai que l'element rouge se glisse en dessous de l'element bleu

                            Edit :
                            Je viens de faire une tentative pour récupéré l'id mais... ça ne fonctionne pas correctement !

                            $('#menu li').mouseenter(function() {
                            	alert($('#menu li').attr("id"));
                            });
                            


                            > Ca m'affiche l'id du premier element de la liste quelque soit l'element que je survole :/
                            • Partager sur Facebook
                            • Partager sur Twitter
                              7 juin 2009 à 10:03:17

                              $(function(){
                              
                              $('#menu li')
                                .mouseenter(function() {
                                  var li = $(this);
                                  alert('id: '+li.attr('id')
                                     +'\nlargeur: '+li.width()
                                     +'\nhauteur: '+li.height()
                                     +'\nposition X: '+li.offset().left
                                     +'\nposition Y: '+li.offset().top
                                  );
                                })
                                .each(function(i){
                                  $(this).attr('id','menu'+i);
                                });
                              
                              });
                              

                              J'ai pas testé, mais teste ;) .
                              • Partager sur Facebook
                              • Partager sur Twitter
                                7 juin 2009 à 12:38:11

                                @zebrure : hover != focus... Je te conseille aussi de relire le tuto sur le CSS.

                                Edit @Almaju : je sais bien mais c'est pas à Tillix que je parlais, je disais juste à zebrure que sa remarque était fausse. Mais pour le sujet tu as raison $(this) récupères l'objet où s'est produit l'événement.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  7 juin 2009 à 12:56:34

                                  Mais arrêtez de lui parler CSS ! Il veut du jQuery u_u !

                                  Sinon Tiltix, c'est du côté de $(this) qu'il faut se tourner ! Si tu fais $('#menu li'), tu auras seulement les attributs du premier, c'est normal ! Image utilisateur
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Créateur de www.shotguncovoit.com !
                                    7 juin 2009 à 18:19:03

                                    @cerium50 : oui, pardon
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Savoir sur quel element on se trouve

                                    × 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