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 :

Sélectionner tous les éléments frères


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut Sélectionner tous les éléments frères
    Bonjour à tous,

    J'essaye de faire un accordéon. Est-ce que je m'y prend bien ou mal?

    Voici ma squelete de départ
    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
     
    <h4 class="accordeon">Titre1</h4>
    <p class="accordeon">texte</p>
    <p class="accordeon">texte</p>
    <p class="accordeon">texte</p>
    <h4 class="accordeon">Titre2</h4>
    <p class="accordeon">texte</p>
    <h4 class="accordeon">Titre3</h4>
    <p class="accordeon">texte</p>
    <p class="accordeon">texte</p>
    <blockquote class="accordeon">texte</blockquote>
    <p class="accordeon">texte</p>
    <h4 class="accordeon">Titre4</h4>
    <p class="accordeon">texte</p>

    J'ai faire que tous les élément ayant la class accordeon, à l'exception du h4 soit caché

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p.accordeon, blockquote.accordeon {
      border:1px solid #ff22ff;
      display: none;
    }

    J'ai fait un micro script pour affiché le contenu du h4 quand on clique dessus

    Code jquery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $(document).ready(function(){
    	$('h4.accordeon').click(function() {
         	console.log($(this).html());
         });
    });

    Ce que je en sais pas faire est comment afficher les p ou blockquote qui sont frère, ou qui sont juste au dssous du h4.accordeon, surlquel on a clicué, sans afficher le éléements qui sont après le h4.accordeon suivant, et l'un après l'autre, si possible

    Merci pour vos lumières

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    ton document aurait plus de sens si il était structuré de la sorte :
    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
    <section>
      <h4 class="accordeon">Titre1</h4>
      <p class="accordeon">texte</p>
      <p class="accordeon">texte</p>
      <p class="accordeon">texte</p>
    </section>
    <section>
      <h4 class="accordeon">Titre2</h4>
      <p class="accordeon">texte</p>
    </section>
    <section>
      <h4 class="accordeon">Titre3</h4>
      <p class="accordeon">texte</p>
      <p class="accordeon">texte</p>
      <blockquote class="accordeon">texte</blockquote>
      <p class="accordeon">texte</p>
    </section>
    <section>
      <h4 class="accordeon">Titre4</h4>
      <p class="accordeon">texte</p>
    </section>
    Cibler des éléments devient un jeu d'enfant.

    PS : il y aurait peut-être une autre structure plus adaptée, mais on ne connaît pas la finalité !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    Bonjour NoSmoling

    Oui en effet, mais je travaille sur un CMS et donc dans le WYSIWYG.
    Donc l'utilisatrice va pouvoir changer le contenu et je ne vois pas comment ajouter une section dans le WYSIWYG.
    D'autant plus que ca doit rester super simple pour une utilsatrice. C'est pourquoi je pensais ajouter des class aux éléments depuis le WYSIWYG.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 166
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 166
    Par défaut
    J'arrive faire ceci

    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
     
    	$('h4.accordeon').each(function(){
     
    		/*
    		var cl = $(this).html().replace(/ /g,"-");
     
    		console.log(cl);
    		*/
     
    		$(this).addClass('accordeon-' + i);
     
    		$(this).nextAll('p.accordeon').addClass('accordeon-' + i);
     
    		i++;
     
    	})
    Le problème c'est qu'il ne s'arrete pas au prochaine h4.

    L'idée est de faire ceci

    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
     
    <h4 class="accordeon accordeon-1">Titre1</h4>
    <p class="accordeon accordeon-1">texte</p>
    <p class="accordeon accordeon-1">texte</p>
    <p class="accordeon accordeon-1">texte</p>
    <h4 class="accordeon accordeon-2">Titre2</h4>
    <p class="accordeon accordeon-2">texte</p>
    <h4 class="accordeon accordeon-3">Titre3</h4>
    <p class="accordeon accordeon-3">texte</p>
    <p class="accordeon accordeon-3">texte</p>
    <blockquote class="accordeon accordeon-3">texte</blockquote>
    <p class="accordeon accordeon-3">texte</p>
    <h4 class="accordeon accordeon-4">Titre4</h4>
    <p class="accordeon accordeon-4">texte</p>

    Le problème est qu'avec mon code j'ai ceci
    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
     
    <h4 class="accordeon accordeon-1">Titre1</h4>
    <p class="accordeon accordeon-1">texte</p>
    <p class="accordeon accordeon-1">texte</p>
    <p class="accordeon accordeon-1">texte</p>
    <h4 class="accordeon accordeon-2">Titre2</h4>
    <p class="accordeon accordeon-1 accordeon-2">texte</p>
    <h4 class="accordeon accordeon-3">Titre3</h4>
    <p class="accordeon accordeon-1 accordeon-2 accordeon-3">texte</p>
    <p class="accordeon accordeon-1 accordeon-2 accordeon-3">texte</p>
    <blockquote class="accordeon accordeon-3">texte</blockquote>
    <p class="accordeon accordeon-1 accordeon-2 accordeon-3">texte</p>
    <h4 class="accordeon accordeon-4">Titre4</h4>
    <p class="accordeon accordeon-1 accordeon-2 accordeon-3 accordeon-4">texte</p>

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Oui en effet, mais je travaille sur un CMS et donc dans le WYSIWYG.
    Donc empresse toi de créer un bouton « Créer un groupe » par exemple, sinon cela va finir en grosse bidouille

    Tu pourrais également décider de créer un wrapper dynamiquement.

    Dans ton cas il faut que tu remettes à zéro ton incrément lorsque tu rencontres un <h4> mais lorsque tu traiteras le deuxième <h4> les éléments auront déjà été traités, donc ta boucle sera redondante.
    Il me semble préférable de cibler tous tes éléments ayant la classe accordeon.

Discussions similaires

  1. Sélectionner tous les éléments sauf un seul
    Par GreatDeveloperOnizuka dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 07/06/2011, 16h52
  2. [Listbox]Sélectionner tous les éléments
    Par Hayato dans le forum 4D
    Réponses: 4
    Dernier message: 13/06/2006, 09h18
  3. Réponses: 15
    Dernier message: 21/06/2004, 16h52
  4. Sélectionner tous les id renvoyés par une 1ère requête
    Par Prof Vince dans le forum Requêtes
    Réponses: 5
    Dernier message: 29/11/2003, 19h46

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