Question

Je suis en train de faire l'image d'être chargée dans div avec effet fadeIn. Le problème est que je ne sais pas comment éviter le chargement et la décoloration en même temps. Je veux l'image à charger et après qu'il est complètement chargé, il devrait être dans fanée.

http://www.izrada-weba.com/vedranmarketic

Ce sont les pouces image:

<div id="thumbs">
                <a href="#" class="slika_thumb" id="1"><img src="slike/th.jpg" border="0"/></a><a href="#" class="slika_thumb" id="2"><img src="slike/th.jpg" border="0"/></a><a href="#" class="slika_thumb" id="3"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a><a href="#"><img src="slike/th.jpg" border="0"/></a> </div>
        </div>

est récipient où l'image doit être chargé:

<div id="desna_kolona">
            <div id="slika"><img src="slike/c6.jpg" /></div>
        </div>

et ce fichier est jquery:

$(document).ready(function(){

    $('.slika_thumb').click(function() {
        var id = $(this).attr("id");
        $('#slika').hide();

        $.ajax({
          url: 'slike/slika.php?id=' + id,
          success: function(data) {

            $('#slika').html(data);
            $('#slika').fadeIn();
          }
        });    

    });

});

J'ai essayé d'utiliser complete ci-dessous success mais toujours le même résultat. Un conseil?

Était-ce utile?

La solution

Peut-être essayer de lier un gestionnaire onload à toutes les images à l'intérieur des données qui se charge via Ajax.

$(document).ready(function(){

  $('.slika_thumb').click(function() {
      var id = $(this).attr("id");
      $('#slika').hide();

      $.ajax({
        url: 'slike/slika.php?id=' + id,
        success: function(data) {

          $('#slika').html(data);
          $('#slika img').bind("load", function() {
            $('#slika').fadeIn();  
          });
        }
      });    

  });

});

Autres conseils

Vous avez l'image cachée pour commencer, comme vous devriez. Ce que je voudrais faire est d'ajouter un gestionnaire d'événements de charge à l'image, puis exécutez votre AJAX pour définir le HTML. Dans votre gestionnaire d'événements de charge, effacer l'image Il sera plus facile si vous remplacez seulement la source de l'image existante puisque vous pouvez alors ajouter le gestionnaire de charge à lui -. Il ne fonctionnera pas sur la div

.
$(document).ready(function(){

    $('#slika').find('img').load( function() {
         $(this).fadeIn();
    });

    $('.slika_thumb').click(function() {
        var id = $(this).attr("id");
        $('#slika').hide().find('img').hide();

        $.ajax({
          url: 'slike/slika.php?id=' + id,
          success: function(data) {
            var src = $(data).find('img').attr('src');       
            $('#slika').show().find('img').attr('src',src);
          }
        });    

    });

});

Charger les images en utilisant image objet . Il tire événement load lorsque l'image est téléchargée. Si vous mettez l'image en #slika quand il est à 100% ont téléchargé et l'utilisation jQuery.fadeIn().

Vous devez utiliser une fonction de rappel sur l'événement .html.

    $.ajax({
      url: 'slike/slika.php?id=' + id,
      success: function(data) {

        $('#slika').html(data, function() {
           $('#slika').fadeIn();
        });
      });
    });  

edit: cela peut effectivement ne pas fonctionner en raison de .html étant une opération synchrone. Vouliez-vous dire load () à la place?

Vous devez émettre requête AJAX pour cette image, attendez qu'il soit complètement chargé en écoutant le succès de l'événement. Cela vous aidera à obtenir l'image dans le cache du navigateur. Ensuite, vous pouvez le faire à votre façon. L'image sera chargée instantanément après.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top