2

Nettuts のチュートリアル コメント(James による) に続いて、このコード スニペットを取得したので、それを実装したいと思います。

画像をプリロードするチュートリアルの方法は長くなりましたが、James の短縮バージョンが気に入りました。ただし、これを実装しようとしましたが、うまくいきません。

最初に配列を設定する必要があるようです。その配列をループしてから、画像オブジェクトを作成してロードします。それでも、Firebug を確認すると、画像がキャッシュにロードされていません。

$(function(){
      var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
        $.preload = function (imgArray) {
            $.each(imgArray, function () {
                alert(imgArray);
                (new Image()).src = 'Images/' + this;
            });
        };
    });

助けていただければ幸いです!

4

3 に答える 3

2

ここでは、関数を定義していますが、呼び出していません。

$.preload = function (imgArray) {

画像をロードするだけの場合は、次のようにスリム化できます。

$(function(){
  var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
  $.each(imgArray, function () {
    (new Image()).src = 'Images/' + this;
  });
});

または、元のメソッドでそれを行うことができます。関数定義は外部ファイルにある可能性がありますが、次のようにページで呼び出す必要があります。

var imgArray = ['bghome01.jpg', 'bghome02.jpg', 'bghome03.jpg'];
$.preload(imgArray);

imgArrayここでの混乱は、配列パラメーターの名前に由来すると思いますが、これらは 2 つの別個のものであるため、パラメーターに$.preload別の名前を付けた場合、混乱が少なくなる可能性があります。

于 2010-06-29T11:23:48.433 に答える
0

私の推測では、画像オブジェクトを保持していないため、画像が読み込まれる前にガベージ コレクションによってそれらが破棄される可能性があります。

いくつかのコードについては、この記事を参照してください: http://engineeredweb.com/blog/09/12/preloading-images-jquery-and-javascript

jQuery は魔法のようなものではないことに注意してください。最終的にはすべて JavaScript であるため、コードに何か問題があるに違いありません。したがって、画像オブジェクトを維持しても問題が解決しない場合は、この記事で正しい方向に進むことができます。

于 2010-06-29T08:39:53.153 に答える
-1

ブラウザがページ上にある画像のみをロードする場合、DOMに画像を追加しないため、これが発生すると思われますstyle="visibility:hidden"DOM に追加して、新しい img-tag の作成を設定してみてください。

于 2010-06-29T07:14:26.863 に答える