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 :

Faire des paquets de DIV à partir d'une série


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut Faire des paquets de DIV à partir d'une série
    Bonjour à tous
    Voilà mon problème je souhaite transformer
    cette série de div
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div class="toto">
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
       <div class="titi"> SOME HTML.... </div>
    </div>
    en série de blocs tutu composés de n div titi

    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
    <div class="toto">
       <div class="tutu">
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
       </div>
       <div class="tutu">
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
       </div>
       <div class="tutu">
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
           <div class="titi"> SOME HTML.... </div>
       </div>
    </div>
    J'arrive à insérer des balises ou du texte tous les n div titi avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("div.toto > div.titi:nth-child(3n)").after("-----uuuuuu");
    ou a entourer tous les niemes elements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("div.toto > div.titi:nth-child(3n)").wrap("<div class='wrap'></div>");
    mais je bloque pour arriver à ce que je veux.
    Merci pour votre aide.
    monlio

  2. #2
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    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
    <html>
    <head>
    <script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script>
    <script type="text/javascript">
    	$(function(){
    	lg=$('.toto .titi').length
    	for(i=0;i<lg;i=i+3){
    	    $('.toto').append( $('<div/>').addClass('tutu').append( $('.toto > .titi:lt(3)') ))
     
    	}
    	})
     
    </script>
    <style type="text/css">
    .tutu {background-color:lime;
    border: solid 1px red;
    margin: 2px;}
    .titi {color:blue;}
    </style>
    </head>
    <body>
    <div class="toto">
       <div class="titi"> SOME HTML.... 1 </div>
       <div class="titi"> SOME HTML.... 2</div>
       <div class="titi"> SOME HTML.... 3</div>
       <div class="titi"> SOME HTML.... 4</div>
       <div class="titi"> SOME HTML.... 5</div>
       <div class="titi"> SOME HTML.... 6</div>
       <div class="titi"> SOME HTML.... 7</div>
       <div class="titi"> SOME HTML.... 8</div>
       <div class="titi"> SOME HTML.... 9</div>
    </div></body>
    </html>

    tiens ça marche aussi ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$(function(){
    	lg=$('.toto .titi').each( function(){
    	if( $(this).index('div') % 3 ==0) {
    	    $('.toto').append( $('<div/>').addClass('tutu').append( $('.toto > .titi:lt(3)') ))
    		}
    	})
    	})
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$(function(){
    	$('.toto .titi:nth-child(3n)').each( function(){
    		    $('.toto').append( $('<div/>').addClass('tutu').append( $('.toto > .titi:lt(3)') ))
    		})
    	})
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$(function(){
    	while($('.toto > .titi').length>0){
    	    $('.toto').append( $('<div/>').addClass('tutu').append( $('.toto > .titi:lt(3)') ))
     	}
    	})
    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 !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut Merci beaucoup
    Bonjour
    Merci beaucoup ça marche nickel, notamment les solution 1 et 4 qui prennent en compte les cas ou le nb de titi n'est pas multiple du n.
    Cependant j'ai du mal a interpréter en "français" le fonctionnement:
    a) le saut au paquet de n suivant (dans la boucle)
    b) la phrase : $('.toto').append( $('<div/>').addClass('tutu').append( $('.toto > .titi:lt(3)') ))

    Encore merci de votre aide
    monlio

  4. #4
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    en principe ils devraient tous fonctionner même pour des non multiples de 3

    partons du transfert des éléments dans un div de classe tutu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     $('.toto') //div conteneur
     .append( $('<div/>')// dans lequel on ajoute à la fin un nouveau div
     .addClass('tutu') // on donne la class tutu au nouveau div
     .append( $('.toto > .titi:lt(3)') )) // et on y deplace tous les 3 premiers enfants direct de .toto qui ont la classe .tutu

    pour ce qui est des boucles pour rendre l'opération récurrente

    soit on part de tous les div de classe titi on verifie si leur index est un multiple de 3 ...

    soit on en prend un sur 3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('.toto .titi:nth-child(3n)')
    c'est sans doute dans ce cas que le ou les deux derniers div ne sont pas transférés


    soit on boucle tant que toto a des enfants directs titi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($('.toto > .titi').length>0){
    vu qu'ils sont ensuite transférés dans un sous div tutu leur nombre décroît au fur a mesure qu'ils sont déplacés par lot de 3
    (sans doute la meilleur solution et la plus rapide )
    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 !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut C'est super clair....
    Merci beaucoup pour l'explication.
    C'est vraiment génial, et c'est devenu très clair.
    Formidable !!!!! Bravo encore pour l'aide.
    A très bientôt
    monlio

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 15
    Par défaut j'ai trouvé une autre solution...
    Re bonjour
    en continuant mon exploration j'ai trouvé une solution utilisant la fonction wrapall.
    la boucle et la selection des n premier reste identique.
    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      while($('.toto > .titi').length>0){
      $('.toto > .titi:lt(3)').wrapAll("<div class='tutu'></div>");}
    Merci encore
    monlio

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

Discussions similaires

  1. generer des graphs birt a partir d'une page web
    Par me_yassine dans le forum BIRT
    Réponses: 3
    Dernier message: 12/05/2007, 23h50
  2. Comment charger des données en mémoire à partir d'une BDD
    Par n@n¤u dans le forum Persistance des données
    Réponses: 2
    Dernier message: 20/02/2007, 11h53
  3. [iframe] Afficher une balise div à partir d'une autre frame
    Par bouchette63 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/10/2006, 11h01
  4. Peut-on faire des colonnes avec "div"
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/07/2006, 06h56
  5. Comment faire pour générer un fichier à partir d'une BD MySQL
    Par dessinateurttuyen dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/07/2006, 20h39

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