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 :

étrange résultat .next('[id^="toto"]')


Sujet :

jQuery

  1. #1
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut étrange résultat .next('[id^="toto"]')
    Bonjour à tous !

    Mon code ne parvient pas à sélectionner la div suivante commançant par to, non directement successive :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <html>
    <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <style>
             .selected {
                border : 1px solid red;
             }
          </style>
    </head>
    <body>
       <div class="toto selected">
    <p>ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur euismod ultricies. Praesent euismod ante semper risus aliquam iaculis. Proin congue leo id diam eleifend viverra. Nulla ac dictum erat. Donec neque enim, luctus sed cursus non, varius ut velit. Phasellus nec turpis vehicula quam consectetur bibendum. Vivamus laoreet vestibulum molestie. Cras malesuada massa eget lectus elementum vitae congue justo ullamcorper. Nullam id lectus nisl. Ut vitae erat leo, cursus posuere ipsum. Lore</p>
    </div>
       <br/><br/>
       <div class="mamie">consectetur adipiscing elit</div>
        <br/><br/>
     
        <br/><br/>
       <div class="toto" >
          nsectetur euismod ultricies. Praes
       </div>
       <button class="prec">Prec.</button>
       <button class="suiv">Suiv.</button>
    </body>
    <script>
    $(".suiv").click(function() {
        $(".selected").toggleClass("selected").next('[id^="to"]').toggleClass("selected");
     
    });
     
     
     
    $(".prec").click(function() {
    $(".selected").toggleClass("selected").prev('[id^="to"]').toggleClass("selected");
    });
    </script>
    </html>
    Au lieu d'aller sur la div suivante commençant par to, tout disparaît..

    Pourquoi ?

    Merci à vous,

    A bientôt,

    LeHibou

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    Ce ne serait pas plutôt class que id ?

  3. #3
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Je me suis trompé : l'erreur c'était de mettre

    next('[id^="to"]')

    au lieu de

    next('[class^="to"]')

  4. #4
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    ah !

    Tu as été plus rapide que moi

    Merci beaucoup, le problème est parti aussi vite qu'il est venu

    A bientôt,

    LeHibou

  5. #5
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Pourquoi si je remplace les class par des id, cela ne fonctionne plus ????

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    <html>
    <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <style>
             .selected {
                border : 1px solid red;
             }
          </style>
    </head>
    <body>
       <div id="toto" class="selected">
    <p>ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur euismod ultricies. Praesent euismod ante semper risus aliquam iaculis. Proin congue leo id diam eleifend viverra. Nulla ac dictum erat. Donec neque enim, luctus sed cursus non, varius ut velit. Phasellus nec turpis vehicula quam consectetur bibendum. Vivamus laoreet vestibulum molestie. Cras malesuada massa eget lectus elementum vitae congue justo ullamcorper. Nullam id lectus nisl. Ut vitae erat leo, cursus posuere ipsum. Lore</p>
    </div>
       <br/><br/>
       <div class="mamie">consectetur adipiscing elit</div>
        <br/><br/>
     
        <br/><br/>
       <div id="toto2" >
          nsectetur euismod ultricies. Praes
       </div>
       <button class="prec">Prec.</button>
       <button class="suiv">Suiv.</button>
    </body>
    <script>
    $(".suiv").click(function() {
        $(".selected").toggleClass("selected").next('[id^="to"]').toggleClass("selected");
    });
     
    $(".prec").click(function() {
    $(".selected").toggleClass("selected").prev('[id^="to"]').toggleClass("selected");
    });
    </script>
    </html>

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    Un id doit être unique sur la page
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Il l'est !

    on a toto et toto2 et ils sont bien distincts !

    Je lui demande d'aller chercher l'id suivant commançant par to, mais en aucun cas le même.

    Donc il ne devrait pas bouder !

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tout simplement, tu n'as pas bien lu (ou compris) le rôle de .next() qui recherche parmi les éléments frères immédiatement suivants.

    Si tu remplaces par .nextAll(), ça fonctionne mieux.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    J'ai lu mais nextAll sélectionne tous les autres éléments !

    Je fais comment si je ne veux que l'id suivant du coup ?
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <html>
    <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <style>
             .selected {
                border : 1px solid red;
             }
          </style>
    </head>
    <body>
       <div id="toto" class="selected">
    <p>ipsum dolor sit amet, consectetur adipiscing elit. Nullam consectetur euismod ultricies. Praesent euismod ante semper risus aliquam iaculis. Proin congue leo id diam eleifend viverra. Nulla ac dictum erat. Donec neque enim, luctus sed cursus non, varius ut velit. Phasellus nec turpis vehicula quam consectetur bibendum. Vivamus laoreet vestibulum molestie. Cras malesuada massa eget lectus elementum vitae congue justo ullamcorper. Nullam id lectus nisl. Ut vitae erat leo, cursus posuere ipsum. Lore</p>
    </div>
       <br/><br/>
       <div class="mamie">consectetur adipiscing elit</div>
        <br/><br/>
     
        <br/><br/>
       <div id="toto2" >
          nsectetur euismod ultricies. Praes
       </div>
      <div id="toto3" >
          loremloremnsectetur euismod ultricies. Praes
       </div>
       <button class="prec">Prec.</button>
       <button class="suiv">Suiv.</button>
    </body>
    <script>
    $(".suiv").click(function() {
        $(".selected").toggleClass("selected").next('[id^="to"]').toggleClass("selected");
    });
     
    $(".prec").click(function() {
    $(".selected").toggleClass("selected").prev('[id^="to"]').toggleClass("selected");
    });
    </script>
    </html>
    On fait comment pour ne sélectionner que toto2 dans ce cas ?

    Il y a une solution annexe ? Le nextUntil me fait une mauvaise soupe aussi

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 660
    Billets dans le blog
    1
    Par défaut
    heu ben un id étant unique ...
    sinon

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    .nextAll().eq(0)
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre très actif
    Inscrit en
    Mai 2010
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 177
    Par défaut
    Vous me sauvez la vie, j'ai trouvé cette solution à l'instant là:


    http://stackoverflow.com/questions/4...-not-immediate

    Merci à vous,

    A bientôt,
    LeHibou

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

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