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 :

Comment controler le chargement de toutes mes images


Sujet :

jQuery

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut Comment controler le chargement de toutes mes images
    Bonour à tous,

    J'ai un petit problème,
    Je charge sur une page une 20ène d'images.
    Evidemment, la page met un certain pour ce charger.

    Je souhaiterais comment utiliser .load() sur toutes les images.
    En d'autre mots, j'aimerais bien que un loader qui troune soit afficher à la place de chauqe image, et quand tout est charger, les image s'affiche à la place.

    Pourriez-vous me mettre sur la voix?

    Je sais que la fonction .load() pourra mainder, mais je ne sais pas comment jongler avec l'image sablier et l'image qui se charge et qui doit etre affichées après

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    La méthode load() n'est pas la bonne solution pour les images (voir http://api.jquery.com/load-event/ : Caveats of the load event when used with images).

    Pour être certain que le DOM est "ready" et que tous les éléments graphiques de la page sont chargés avant d'agir, il faut utiliser la méthode load() sur window.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $(function(){
      // DOM ready
      // votre code jQuery qui n'agit pas et qui ne dépend pas des graphiques
    });
     
    $(window).load(function () {
      // page ready
      // votre code jQuery qui agit ou qui dépend des graphiques
    });

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Ben j'essaye ceci, mais je suis pas trop d'y arrivé. Du moins pas encore.
    J'ai créé cette fonction
    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
     
    function loadingImages(folder)  
    {  
        //$("."+loader).html('<img src="images/loading.gif"> saving...');  
     
    	$.ajax({  
            type: "POST",  
            url: "include/loadImages.php",  
            data: {'folder' : folder},
            success: function(msg){  
                $(".load").html('reussi');  
            }  
        });
     
    }
    Dans mon fichier loadImages.php j'ai ceci:
    Code PHP : 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
     
    <?php
    		$folder = $_POST['folder'];
    		$a=array();
    		if ($handle = opendir('images/albums/'.$folder.'/')) {
    			while (false !== ($file = readdir($handle))) {
    			   if(preg_match("/\.png$/", $file)) {
    					$a[]=$file;
    			   }else if(preg_match("/\.jpg$/", $file)) {
    					$a[]=$file;
    			   }else if(preg_match("/\.jpeg$/", $file)) {
    					$a[]=$file;
    			   }
    			}
    			closedir($handle);
    		}
    echo '<ul class="slider">';
    		foreach($a as $i){
    			echo '<li class="loadedImages"><img src="images/albums/'.$folder.'/'.$i.'" /></li>';
    		}
    echo '</ul>';
    ?>
    J'ai aussi qui dérouler le bloque qui doit afficher les images
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $('.aLemas').click(function() {
    		if ($("#lemas").is("#lemas:hidden")) {
    			$("#lemas").slideDown("slow");
     
     
    		}else{
    			$("#lemas").slideUp("slow");
    		}
    	});
    Ce que j'aimerais ce que lorsque je clique sur <a class="aLemas">, la fonction loadingImages() soit appelée et que les image soit affiché dans #lemas.

    Ce que je n'arrive pas faire!

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Je pense faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#lemas").prepend(loadingImages())
    chais pas...

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    J'ai réussi,le seul truc que je n'arrive pas. J'aimerais qu'une image (un sablier )s'affiche en attendant le la requet ajax soit terminée.
    Si dessous, il y a "success".
    Il n'y a pas un truc qui dit "pendant" qui agirait avant "success"?
    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
     
    function loadingImages(folder,prependTo)  
    {  
        //$("."+loader).html('<img src="images/loading.gif"> saving...');  
     
    	$.ajax({  
            type: "POST",  
            url: "/include/loadImages.php",  
            data: "folder="+folder,
            success: function(msg){  
                $("#"+prependTo+" .container").html(msg); 
     
    			$('ul.slider').cycle({ 
        			fx:     'fade', 
        			speed:  1000, 
        			timeout: 0, 
        			next:   '.next', 
        			prev:   '.prev' 
    			});
            }  
        });
     
    }

  6. #6
    Rédacteur
    Avatar de Macmillenium
    Homme Profil pro
    Développeur front-end
    Inscrit en
    Mars 2008
    Messages
    2 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur front-end
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 2 333
    Points : 3 748
    Points
    3 748
    Par défaut
    Regarde plutôt du coté du plugin Lazy Load.

Discussions similaires

  1. attendre le chargement de toutes les images
    Par SpaceFrog dans le forum jQuery
    Réponses: 2
    Dernier message: 28/12/2010, 11h59
  2. Réponses: 2
    Dernier message: 05/03/2010, 10h19
  3. Attente du chargement de toutes les images
    Par black is beautiful dans le forum Flex
    Réponses: 1
    Dernier message: 04/03/2010, 00h01
  4. Calendrier-> ne load pas toutes mes images
    Par ozzmax dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/06/2007, 15h45
  5. comment modifier la couleur de toutes mes forms
    Par korntex5 dans le forum Delphi
    Réponses: 3
    Dernier message: 08/08/2006, 15h29

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