1

我正在使用 jquery 制作一个非常简单的画廊,它适用于所有浏览器,但在 IE8 和 7 中失败。

任何想法为什么以及如何调试它?

//Gallery system, single and compare pages
function makeGallery (whichThumb,whichMainImage,whichImageWrap) {
    $(whichThumb).live("click", function() {
        $(whichMainImage).hide();
        $(whichImageWrap).css('background-image', "url('images/no-image.png')");
        var i = $('<img />').attr('src',this.href).load(function() {
            $(whichMainImage).attr('src', i.attr('src'));
            $(whichImageWrap).css('background-image', 'none');
            $(whichMainImage).fadeIn();
        });
        return false; 
    });
} // End makeGallery

发生的事情是图像更改为no-image.png,之后没有任何反应......我正在设置 jsfiddle 进行演示......

4

1 回答 1

1

您应该反向设置 onload 回调和 src :

  var i = $('<img />');
  i.load(function() {
        $(whichMainImage).attr('src', i.attr('src'));
        $(whichImageWrap).css('background-image', 'none');
        $(whichMainImage).fadeIn();
  });
  i.attr('src',this.href);

在旧的 ie 版本上,如果浏览器足够快来获取图像(例如从缓存中),则不会调用回调,并且使用此顺序通常是最佳实践。

由于 live 已被弃用很长时间并且现在已从最新版本中删除,因此您应该使用on代替。

于 2013-01-28T12:16:47.480 回答