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 :

jQuery et slideToggle


Sujet :

jQuery

  1. #1
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut jQuery et slideToggle
    Bonjour à tous,

    Je cherche à ajouter une fonction pour faire apparaitre et disparaitre un tableau avec un click.

    Apres recherche sur le net j'ai trouvé la library jQuery, mais ne parvient pas à la faire fonctionner.

    Je suis un peu debutant en javascript.

    Voici mon code jscript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript" src="Js/jquery-1.3.1.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){ 
        $("div.voir").click(function(){
            $(this).parent().find("div.BaliseGene").next("div.BaliseTab").slideToggle("slow");
        });
    });
    </script>
    et voila mon code html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <div class="TitreGene">Titre Generale<a href="#" class="voir">^</a></div>
        <div class="BaliseGene">
          <div class="BaliseTab">
            <div class="TitreTab">
                  <div class="TitreTabText">TitreTab1</div>
                  <table>...</table>
            </div>
         </div>
       </div>
    Les multiple div me servent pour le CSS.

    Si qq un peut m'aiguiller.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Peut-être ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function(){ 
        $("div.voir").click(function(){
            $("div.BaliseTab", this).slideToggle("slow");
        });
    });

  3. #3
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Pas mieux

  4. #4
    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 : 54
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(document).ready(function(){ 
        $("div.voir").click(function(){
            $("div.BaliseTab", this).slideToggle("slow");
            return false;
        });
    });
    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

  5. #5
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Bovino, quand j'utilise tojn code en ajoutant une alerte, il ne la detecte pas

    J'ai changé le div.voir par a.voir et il detecte l'alerte, mais toujours pas de tableau accordeon

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Tu n'as pas de div de class='voir' dans ton code.
    donc div.voir sélectionne rien.

    essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(document).ready(function(){ 
       $("a.voir").click(function(){
            $("div.BaliseTab", $(this.parentNode).next("div.BaliseGene")).slideToggle("slow");
        });
    });

  7. #7
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Oui marcha, c'est bien ce que je me disais.

    Ton code me renvoi une erreur "Objet Attendu", comme si il ne trouvais pas mes balises. Ne faudrait il pas passé par des id plutot qu edes classes? Ce qui ne m'arrangerait pas du tt, car la generation de mes tableau est completement dynamique et leur nombre est aleatoire.

  8. #8
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Voici mon code de test qui fonctionne chez moi (FireFox)

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr">
    <head>
    <title>test</title>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
    <script type='text/javascript' src='/libs/jquery-1.3.1.min.js'></script>
    <script type='text/javascript' src='/libs/debug.js'></script>
    <script type='text/javascript'>
    $(document).ready(function(){ 
       $("div.BaliseTab").hide();
       $("a.voir").click(function(){
            $("div.BaliseTab", $(this.parentNode).next("div.BaliseGene")).slideToggle("slow");
        });
    });
    </script>
    </head>
    <body>
    <div class="TitreGene">Titre Generale<a href="#" class="voir">^</a></div>
        <div class="BaliseGene">
          <div class="BaliseTab" style='background-color: red'>
            <div class="TitreTab">
                  <div class="TitreTabText">TitreTab1</div>
                  <table><tr><td>...</td></tr></table>
            </div>
         </div>
       </div>
     
    </body>
    </html>

  9. #9
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Pour ma part meme avec ton code j'ai tjs mon probleme d'objet attendu . Je l'ai simplement copié coller dans une nouvelle page.

    J'ai une grosse contrainte c'est que je suis obligé de developper sous IE6, mais je l'ai testé sous Firefox et idem.

  10. #10
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    J'ai trouvé le pourquoi de l'objet attendu et donc la solution à mon pb:
    Visual attendais un chemin en dur vers la librairie Javascript

    Merci pour l'aide.

  11. #11
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Heu, juste une derniere question:

    j'essaye à present de faire la meme chose avec le niveau en dessous, c'est a dire avec le code html:
    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
     
    <body>
    <div class="TitreGene">Titre Generale<a href="#" class="voir">^</a></div>
        <div class="BaliseGene">
          <div class="BaliseTab" style='background-color: red'>
            <div class="TitreTab">
                  <div class="TitreTabText">TitreTab1<a href="#" class="voir2">^</a></div>
                  <table class="tableau"><tr><td>...</td></tr></table>
            </div>
         </div>
         <div class="BaliseTab" style='background-color: green>
            <div class="TitreTab">
                  <div class="TitreTabText">TitreTab2<a href="#" class="voir2">^</a></div>
                  <table class="tableau"><tr><td>...</td></tr></table>
            </div>
         </div>
     
       </div>
    Et la je me perd dans les noeuds. J'ai essaye ceci sans succées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type='text/javascript'>
    $(document).ready(function(){ 
       $("table.tableau").hide();
       $("a.voir2").click(function(){
            $("table.tableau", $($(this.parentNode).parentNode).next("div.BaliseTab")).slideToggle("slow");
        });
    });
    </script>
    Comment faire pour atteindre le noeuds grand parent puis deplier table?

  12. #12
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Regarde la fonction JQuery.parents()

  13. #13
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type='text/javascript'>
    $(document).ready(function(){ 
        $("table.tableau").hide();
       $("a.voir2").click(function(){
        var mavar=$(this).parents("div.BaliseTab");
           var montableau = $(mavar).next("table.tableau");
            $(montableau).slideToggle("slow");
        });
    });
    </script>
    Mais ce ne foinctionne pas, est ce que je m'y prend bien pour les declaration/utilisation de variable? Chaque tuto sur Jquery que j'ai trouvé n'utilise jamais de variables, alors j'improvise.

  14. #14
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    quand tu fais une selection avec $(...) tu obtiens une instance
    d'un objet Jquery (qui peut être entre 0 et n éléments)

    Si tu sauve cet instance dans une variable puis que tu utilise
    cette variable pour appeler d'autre fonctions tu n'as pas besoin
    de refaire $(...) tu écris juste: mavar.next("table.tableau"); par exemple.

  15. #15
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Ok merci pour les conseils. Dans cette galere j'aurais appris pas mal de chose sur Jquery

    Mais ca ne marche tjs pas, voici mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type='text/javascript'>
    $(document).ready(function(){ 
        $("table.tableau").hide();
       $("a.voir2").click(function(){
        var mavar=$(this).parents("div.BaliseTab");
           var montableau = mavar.next("table.tableau");
            montableau.slideToggle("slow");
        });
    });
    </script>
    Mais ca ne marche pas La je ne vois pas, mon code me semble logique, doit y avoir une erreur de syntaxe specifique à JS.

  16. #16
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Essaie de procéder par étapes pour voir si tu sélectionne les bon
    éléments, par exemple en modifiant un style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).parents("div.BaliseTab").css('backgroundColor', 'red');
    et ainsi de suite

  17. #17
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    Parfait, ca fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <script type='text/javascript'>
    $(document).ready(function(){ 
        $("table.tableau").hide();
       $("a.voir2").click(function(){
        var mavar=$(this).parents("div.BaliseTab");
           var montableau = mavar.find("table.tableau");
            montableau.slideToggle("slow");
        });
    });
    </script>
    Merci pour tes conseils

  18. #18
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut
    Bonjour a tous,
    Je suis encore qu'un débutant dans le domaine des sites web, en ce moment je cherche à faire un menu déroulant avec la librairie Jquery, le menu marche parfaitement, le seul souci est que dés que je clique sur une rubrique, toutes les autres rubriques en dessous s'ouvrent avec, si une âme charitable pouvait m'aidé, ce serai sympa...

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

Discussions similaires

  1. Template Smarty, jQuery et slideToggle
    Par zerros dans le forum jQuery
    Réponses: 3
    Dernier message: 25/10/2011, 16h09
  2. Jquery slideToggle et positionnement
    Par Yoan_ dans le forum jQuery
    Réponses: 2
    Dernier message: 10/01/2009, 12h47
  3. [JQuery] probleme de slideToggle
    Par timboy11 dans le forum jQuery
    Réponses: 13
    Dernier message: 06/07/2008, 19h01
  4. [js]problèmes avec jquery
    Par pomgnon dans le forum jQuery
    Réponses: 3
    Dernier message: 30/03/2007, 20h47
  5. [JQUERY] Comment appeler une fonction php avec jquery
    Par popogendarme dans le forum jQuery
    Réponses: 1
    Dernier message: 20/03/2007, 16h07

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