加载后淡入淡出图像

时间:2010-01-23 20:59:47

标签: jquery image load fadein

我正在尝试使用fadeIn效果将图像加载到div中。问题是我不知道如何避免同时加载和褪色。我想要加载图像,在完全加载后,它应该被淡入。

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

这些是图像拇指:

<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>

这是应该加载图像的容器:

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

这是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();
          }
        });    

    });

});

我尝试使用complete下面的success但结果仍然相同。 有什么建议吗?

5 个答案:

答案 0 :(得分:5)

也许尝试将onload处理程序绑定到通过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();  
          });
        }
      });    

  });

});

答案 1 :(得分:1)

您可以根据需要隐藏图片。我要做的是向图像添加一个加载事件处理程序,然后运行你的AJAX来设置HTML。在你的加载事件处理程序中,淡入图像。如果你只是替换现有图像的源代码就会更容易,因为那时你可以为它添加加载处理程序 - 它不适用于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);
          }
        });    

    });

});

答案 2 :(得分:0)

使用Image Object加载图片。它会在下载图像时触发load事件。因此,当您将图片100%下载并使用#slika时,请将图片放入jQuery.fadeIn()

答案 3 :(得分:0)

您需要在.html事件上使用回调函数。

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

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

编辑:由于.html是同步操作,这实际上可能无效。你的意思是load()而不是吗?

答案 4 :(得分:0)

您必须为该图像发出AJAX请求,等待通过侦听成功事件完全加载它。这将帮助您将图像放入浏览器缓存中。然后你就可以按照自己的方式去做。此后图像将立即加载。