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 :

Besoin d'aide avec la fonction height() et autre


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Par défaut Besoin d'aide avec la fonction height() et autre
    Bonjour,

    Je dois écrire un script qui mesure et additionne la hauteur de chaque item (<li>) d'une liste (<ul>) et qui, dès que la somme atteint 200px, place les items suivants dans une nouvelle liste qui viendra se placer à côté de la première... (et de même pour toutes les listes de la même classe, disons par exemple ".liste")

    J'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $(document).ready(function() {
           $('.list').each(function() {
           h=0;
                  $(this).find('li').each(function() {
                  h = h + $(this).height();
                         if ( h >= 200 ){
                         $(this).nextAll().insertAfter($(this).parent('.list')).wrapAll('<ul class="list second_column"></ul>');
                         $(this).parent('.list').css("height", "200px");
                         h=0;
                         }
                  })
           })
    });

    Ça ne fonctionne pas, "$(this).height()" retourne 0 comme valeur...

    Je suis débutante
    Si quelqu'un peut m'aider...

    Merci d'avance.

  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
    Je pensais pouvoir passer par un :visible ... mais à priori ça ne passe pas sur un overflow hidden ???
    Y'a pas un truc en js ou jquery pour ça ?
    j'ai contourné avec un calcul "savant"
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <style type="text/css">
    ul {border:solid 1px grey;
    width: 200px;
    float:left;
    margin:0;
    list-style-position: inside;
     
    }
    </style>
     
     
    <script src="http://code.jquery.com/jquery-latest.min.js"  type="text/javascript"></script>
     
    <script type="text/javascript">
    $(function(){
    //Population du ul pour l'exemple 
    var i=-1;
    while(++i<101){
    $('#foo').append($('<li>').html(i+'....'))
    }
    //definition de la hauteur du ul à 200px 
    $('#foo').css({"overflow":"hidden","height":"200px"})
     
    //calcul du nombre de lis visibles  => maxlis
    tabhidden=new Array();
    $('#foo li').each(function(){
    	if ( ($(this).offset().top + $(this).height()) >200){
    		tabhidden.push($(this))
    	}
    	})
    maxlis=$('#foo li').length - tabhidden.length;
     
    //deplacement des lis invisibles pas lots de maxlis dans de nouveaux ul
    while( $('#foo li').length > maxlis+1){
    $('body').append($('<ul/>',{"height":"200px"}).append( $('#foo li:gt('+(maxlis)+'):lt('+(maxlis+1)+')') ) )
    }
     
    })
    </script>
    <title>Nouvelle page 1</title>
     
    </head>
     
    <body>
    <ul id="foo">
    </ul>
     
    </body>
     
    </html>
    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
    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
    version avec hauteur paramètrable du ul

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <style type="text/css">
    ul {border:solid 1px grey;
    width: 200px;
    float:left;
    margin:0;
    list-style-type:lower-alpha;
    }
    li {margin-left:50px}
    </style>
     
     
    <script src="http://code.jquery.com/jquery-latest.min.js"  type="text/javascript"></script>
     
    <script type="text/javascript">
    $(function(){
    //Population du ul pour l'exemple 
    var lih=250 //heuteru souhaitée du ul
    var i=0;
    while(++i<116){
    $('#foo').append($('<li>').html(i+'....'))
    }
    //definition de la hauteur du ul à 200px 
    $('#foo').css({"overflow":"hidden","height":lih+"px"})
     
    //calcul du nombre de lis visibles  => maxlis
    tabhidden=new Array();
    $('#foo li').each(function(){
    	if ( ($(this).offset().top + $(this).height()) >lih){
    		tabhidden.push($(this))
    	}
    	})
    maxlis=$('#foo li').length - tabhidden.length;
     
    //deplacement des lis invisibles pas lots de maxlis dans de nouveaux ul
    while( $('#foo li').length > maxlis+1){
    $('body').append($('<ul/>',{"height":lih+"px"}).append( $('#foo li:gt('+(maxlis)+'):lt('+(maxlis+1)+')') ) )
    }
     
    })
    </script>
    <title>Nouvelle page 1</title>
     
    </head>
     
    <body>
    <ul id="foo">
    </ul>
     
    </body>
     
    </html>
    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 !

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Par défaut
    Merci SpaceFrog!!!

    En plus de bien me dépanner ton script m'a permis de voir que mon problème avec la fonction height() venait de l'ordre de mes scripts (pfffff!!) et du coup de faire fonctionner le mien!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2015, 17h33
  2. Besoin d'aide avec la fonction getConnectionInfo();
    Par xXO--Hades--OXx dans le forum Android
    Réponses: 0
    Dernier message: 08/02/2011, 23h50
  3. Besoin d'aide sur les fonction d'interbase
    Par BOUBOU81 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/11/2004, 10h00
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

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