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 に答える