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 :

Déterminer hauteur/largeur d'une div en automatique (AJAX)


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut Déterminer hauteur/largeur d'une div en automatique (AJAX)
    Bonjour,

    je suis confronté à un problème. J'ai une div, vide, que je rempli avec un appel AJAX à une page. Le contenu est correctement inséré dans la div et une barre de scroll est automatiquement mise.

    Sauf que je voudrai faire quelque chose de plus joli et customiser la barre de scroll.

    J'ai essayé plusieurs plugin que l'on trouve sur le net, mais le fait de ne pas connaitre la hauteur de la div bloque le bon fonctionnement de ceux ci.

    Comment peut-on déterminer, avec jquery, la hauteur (ou largeur) d'une div chargée par de l'AJAX ?

  2. #2
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Bien que je serais ravis de me casser la tête pour te donner une solution, je te conseil vivement de modifier la scroll bar avec des propriétés CSS.

    De plus je pense qu'un simple "hauteur élément jquery" sur google te conduiras a height()
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Coté CSS j'avais regardé vite fait cet aprèm, et je ne pensais pas qu'IE accepterait une modification de scrollbar !

    J'ai trouvé ce site : http://codemug.com/html/custom-scrollbars-using-css/ qui détaille la customisation de la scrollbar sous IE, Firefox et Chrome. donc ça m'a l'air pas mal, je testerai ça !

    Coté javascript, je n'ai pas trouvé, que ce soit avec les height(), innerheight ou autre ...

  4. #4
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    ici
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Coté CSS j'ai abandonné, sous firefox ça ne passe pas et sous IE les options sont moyennes.

    Coté javascript, le height() ne passe pas car la div n'est pas chargée ! Et même en utilisant un ready, le height vaut 0 ...

  6. #6
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Tu n'a qu'a récupérer la hauteur de la div une fois chargé non ?
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    euh ouais j'aimerais bien ...

    mais je ne comprends pas pourquoi lors du ready mon élément n'est pas chargé (et dans mon test, je n'ai que du texte) !

    Un ready sur un div permet bien d'exécuter un traitement après le chargement en mémoire de la div ?

  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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, un ready sur un div, ça n'existe pas !

    Puisque ton contenu est chargé via AJAX, c'est dans le callback de la requête qu'il faut récupérer les dimensions actualisées.
    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 à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Oui je viens de voir ça qu'un ready ne passait que sur le document ...

    Puisque ton contenu est chargé via AJAX, c'est dans le callback de la requête qu'il faut récupérer les dimensions actualisées.
    Par contre je crois que je mélange tout. Coté HTML j'ai une simple div :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="test"></div>

    Coté JS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $.get('_test.php', null).success(function(data) { $("#test").html($(data)); });
    J'ai bien mis un callback, mes données sont bien affichées à l'écran. Par contre si je trace la hauteur de la div "test", j'ai 0. Je pense que le contenu est bien récupéré, mais pas chargé, d'où ma tentative de "ready" Ce soir j'essayerai avec un $(document).ready() en espérant que ça passe.
    Si quelqu'un a une idée ou des conseils pour faire ça je suis preneur

  10. #10
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    C'est que tu dois mal t'y prendre alors...
    Mais comme tu ne montres pas comment tu procèdes pour récupérer les dimensions, ça va être compliqué de t'aider...
    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

  11. #11
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Oui surement.

    Je n'ai pas le code devant moi, mais c'est tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $.get('_test.php', null).success(function(data) { 
    $("#test").html($(data)); 
    alert($("#test").height());
    });
    => renvoie 0.

    je rajouterai ce soir le code exact avec des précisions suite à vos remarques.

  12. #12
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Gné ?!?

    Tu "jQueryse" trop mon amis

    $("#test").html($(data)); ne risque pas de mettre le contenu de ta variable data dans le conteneur #test...

    essaye plutôt avec $("#test").html(data);
    Je préfère fermer ma gueule et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.

  13. #13
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Il est clair que ce n'est pas particulièrement nécessaire, mais ce n'est pas incorrect pour autant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var txt = '<div>Lorem<br />ipsum</div><p>foobar !</p>';
    console.log($(txt))
    renvoie bien un objet jQuery que tu peux insérer dans le DOM.
    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

  14. #14
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Donc, pour confirmer qu'il devient difficile de te répondre, cet exemple fonctionne correctement :
    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
    22
    23
    24
    25
    26
    27
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8" />
    	<title>$.get()</title>
    	<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    	<script>
                    jQuery(function($){
                            var hauteur1 = $('#test').height();
                            $('#console').append('<div>Hauteur initiale : '+hauteur1+'px.</div>');
                            $('#go').on('click', function(){
                                    $.get('getAjx.html').success(function(data) {
                                            $("#test").html($(data));
                                            var hauteur2 = $('#test').height();
                                            $('#console').append('<div>Hauteur initiale : '+hauteur2+'px.</div>');
                                    });
                            });
                    });
            </script>
    </head>
    <body>
    	<h1>Utilisation de $.get()</h1>
    	<div id="test"></div>
    	<button id="go">Tester</button>
    	<div id="console"></div>
    </body>
    </html>
    getAjx.html
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div>Lorem<br />Ipsum</div>
    <p>Hello World !</p>
    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

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Hier soir j'ai mis en ligne une première version du site : (version contenant mon problème)

    En voulant préparer une version "light" de mon site pour vous montrer ce que j'avais, il s'avère que le height fonctionnait. J'ai donc repris mon site en simplifiant les animations d'affichage de mes divs et j'ai réussi à avoir quelque chose qui fonctionne ! Donc mon problème n'est pas lié à l'ajax ! Pour la partie "actu" du site, le problème sera donc résolu, mais pour la partie "presse", contenant des images, j'ai toujours un problème. je fouillerai ça.

    En construisant le site, j'ai voulu bien distinguer et séparer le JS :
    - une var par "partie du site" (actu/presse/shop etc.). Chaque var contient une méthode show() et hide().
    - une méthode getAjax dans un script ajax.js regroupant l'appel à une page et la méthode de traitement du résultat.

    mais au vu de ce post, les animations semblent s'embrouiller les unes aux autres ...

Discussions similaires

  1. [1.x] Connaitre la taille (hauteur/largeur) d'une image uploadé
    Par Malonix dans le forum Symfony
    Réponses: 11
    Dernier message: 08/07/2010, 12h09
  2. [AJAX] Recuperer la largeur d'une div
    Par supertino7 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2008, 20h38
  3. Hauteur, largeur d'une scrollbar
    Par stephane.julien dans le forum C#
    Réponses: 1
    Dernier message: 24/04/2008, 11h37
  4. Recuperer la largeur d'une div
    Par Sourrisseau dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 22/03/2007, 06h41
  5. [IMAGE] Comment obtenir hauteur largeur d'une image ??
    Par pouillou dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 21h38

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