2

我正在尝试使图像加载到具有淡入淡出效果的 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但结果仍然相同。有什么建议吗?

4

5 回答 5

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

  });

});
于 2010-01-23T21:04:15.973 回答
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);
          }
        });    

    });

});
于 2010-01-23T21:11:01.960 回答
0

使用Image Object加载图像。下载图像时触发load事件。因此,您将图像放入#slika100% 下载并使用jQuery.fadeIn().

于 2010-01-23T21:04:11.150 回答
0

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

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

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

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

于 2010-01-23T21:05:11.353 回答
0

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

于 2010-01-23T21:05:19.567 回答