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 :

Boucler sur des éléments


Sujet :

jQuery

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut Boucler sur des éléments
    Bonjour,
    J'ai une série de boutons en JQuery qui se présentent sous cette forme et je voudrais mettre une boucle à la place. Comment faire ? Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        $('#1').click(function() {
    			  $('#gallerie').css("top","0px");
              });
        $('#2').click(function() {
    			  $('#gallerie').css("top","-310px");
              });
        $('#3').click(function() {
    			  $('#gallerie').css("top","-620px");
              });
        $('#4').click(function() {
    			  $('#gallerie').css("top","-930px");
              });

  2. #2
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut
    j'ai essayé avec cette syntaxe mais ça ne donne aucun résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (var i=1; i<20; i++) {
        //console.log(i);
     
    	$('#'+i).click(function() {
    			  $('#gallerie').css("top",-310*(i-1)+'px');
              });
     
     
    }

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 539
    Par défaut
    pour que la propriété top puisse être modifiée, il faut que la "gallerie" ait une position absolute en css, Ou utiliser marginTop, au lieu de top.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $('#1').click(function() {
    			  $('#gallerie').css("marginTop","0px");
              });
        $('#2').click(function() {
    			  $('#gallerie').css("marginTop","-310px");
              });
        $('#3').click(function() {
    			  $('#gallerie').css("marginTop","-620px");
              });
        $('#4').click(function() {
    			  $('#gallerie').css("marginTop","-930px");
              });

  4. #4
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut
    ok, donc au niveau du code ça donne ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (var i=1; i<20; i++) {
     
    	$('#'+i).click(function() {
    			  $('#gallerie').css("marginTop",-310*(i-1)+'px');
                              alert("bouton cliqué"+i);
              });
     
     
    }
    il doit y avoir une erreur car alert("bouton cliqué"+i); me renvoie toujours le nombre 20 et non le bon numéro du bouton sur lequel j'ai cliqué !

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 539
    Par défaut
    pour ne pas compliquer les choses, tu peux utiliser un selecteur jQuery qui factorise les 4 éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $("#1,#2,#3,#4").click(function(){
    $('#gallerie').css("marginTop",-310*($(this).index())+'px');
         alert("id du bouton cliqué :"
         +$(this).attr('id')
         +', top :'+(-310*$(this).index())
         +', i :'+$(this).index());
     
    });

  6. #6
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut
    merci, ça marche nickel ! par contre il se trouve que si je mets les liens dans une <table> le script jQuery ne fonctionne plus. C'est un problème de ciblage ?

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 539
    Par défaut
    pour te répondre il faut nous montrer le code html généré.

  8. #8
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut
    Voilà le code html

    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
    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
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Document sans nom</title>
    </head>
     
    <body>
    <table  align="center">
      <tr height="17">
        <td width="25%"></td>
      </tr>
      <tr>
        <td width="30%"><a href="#" id="1" >Soudain l’été dernier</a></td>
      </tr>
      <tr>
        <td><a href="#" id="2">Un tramway nommé désir</a></td>
      </tr>
      <tr>
        <td><a href="#" id="3">Portrait d’une Madone</a></td>
      </tr>
    </table>
    <table align="center">
      <tr>
        <td valign="top" width="325"><div style="position:absolute;  width:325px; height:200px;">
            <table id="gallerie" style="position:absolute;" cellpadding="0" cellspacing="0" border="0">
              <tr>
                <td height="310" width="330" ><img src="img/portrait.jpg"></td>
              </tr>
              <tr>
                <td height="310" width="330" ><img src="img/portrait1.jpg"></td>
              </tr>
              <tr>
                <td height="310" width="330"><img src="img/portrait2.jpg"></td>
              </tr>
            </table>
          </div></td>
      </tr>
    </table>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <!-- jQuery est inclus ! -->
       <script >
     
    	$("#1,#2,#3").click(function(){alert("id du bouton cliqué :"
         +$(this).attr('id')
         +', top :'+(-310*$(this).index())
         +', i :'+$('td').index());
    $('#gallerie').css("marginTop",-300*($(this).index())+'px');
    })
     
        </script>
    </body>
    </html>

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 539
    Par défaut
    oui, cela fonctionne pas par-ce que l'index vaut toujours 0, mais avant de continuer, c'est déconseillé d'utiliser des chiffres comme des Id.
    tout d'abord on change les id des éléments a.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <tr height="17">
        <td width="25%"></td>
      </tr>
      <tr>
        <td width="30%"><a href="#" id="_1" >Soudain l’été dernier</a></td>
      </tr>
      <tr>
        <td><a href="#" id="_2">Un tramway nommé désir</a></td>
      </tr>
      <tr>
        <td><a href="#" id="_3">Portrait d'une Madone</a></td>
      </tr>

    puis c'est en fonction de l'id qu'on va traiter le marginTop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $("#_1,#_2,#_3,#_4").click(
      function(e) {
        e.preventDefault(); //inhiber le lien
        $('#gallerie')
        .css("marginTop", +(-310 * parseInt($(this).attr('id')-1)) + 'px');
        console.log("id du bouton cliqué :" +$(this).attr('id') 
          + ', top :' + (-310 * parseInt($(this).attr('id')-1)) 
          +', i :' + parseInt($(this).attr('id')-1));
     
      });

  10. #10
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2014
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2014
    Messages : 50
    Par défaut
    merci beaucoup pour ton aide !

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 241
    Par défaut
    Bonjour,
    en lieu et place du sélecteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#_1,#_2,#_3,#_4").click(
    on peut utiliser
    pas besoin d'ID, sauf si nécessaire dans la suite du code, et il n'y aura pas de modification à faire si on ajoute des éléments.

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

Discussions similaires

  1. [XSLT 1.0] XSLT - Boucler sur des éléments uniques
    Par the_unforgiven dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/04/2018, 21h10
  2. boucler sur des éléments de formulaire
    Par cedrick21 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2010, 12h09
  3. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 17h15
  4. boucler sur des checkboxes
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/10/2004, 09h27
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 17h29

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