2011-07-30 9 views
0

すべての小さな画像に$(window).load()がロードされた後にリンクによって参照されるライトボックスギャラリーから大きな画像を読み込む関数を作成しました。jQuery Imageプリローダー機能は機能しますか?

ここでは、コードです:

$(window).load(function() { 
    if ($('ul#gallery').length > 0) { 
     // make a container, fill in images and attach it to the page body 
     var c = $("<div />").attr({style: 'display: none', id: 'gallerypreload'}); 
     $("ul#gallery li > a").each(function() { 
      $('<img />').attr('src', $(this).attr('href')).appendTo(c); 
     }); 
     c.appendTo('body'); 
    } 
}); 

ギャラリーは以下のようになります。

<ul id="gallery"> 
    <li><a href="/img/image.jpg" title="Image title"><img src="img/thumbnail.jpg" alt="Image title" /></a></li> 
    <li><a href="/img/image.jpg" title="Image title"><img src="img/thumbnail.jpg" alt="Image title" /></a></li> 
    <li><a href="/img/image.jpg" title="Image title"><img src="img/thumbnail.jpg" alt="Image title" /></a></li> 
    <li><a href="/img/image.jpg" title="Image title"><img src="img/thumbnail.jpg" alt="Image title" /></a></li> 
    <li><a href="/img/image.jpg" title="Image title"><img src="img/thumbnail.jpg" alt="Image title" /></a></li> 
</ul> 

ブラウザが最初にすべてのサムネイルをロードし、THENのための大きな画像をプリロードすることになっているので、私は、これをしたいが、見る。また、私は$(window).load()でもトリガされる何らかのフェード効果を書いています。

私の質問はここにあります:すべてのブラウザは、本体に取り付けられた画像をコンテナに入れていますか?したがって、それは表示されません、理論的に彼らはイメージを読み込んではいけませんか?私はのスタイルをしなければならないのでしょうか?

ありがとうございました。

答えて

3

あなたは

$("ul#gallery li > a").each(function() { 
    var preload = new Image(); 
    preload.src = $(this).attr('href'); 
    $('<img />').attr('src', preload.src).appendTo(c); 
}); 
その後

IMGタグが表示されている場合、それは問題ではないはずかない


ベースをプリロードしたいSRCとjavascriptの画像オブジェクトを作成することにより、予圧を強制することができます以下のコメントでは、これは画像をプリロードするのに十分でなければなりません:

$("ul#gallery li > a").each(function() { 
    var preload = new Image(); 
    preload.src = $(this).attr('href'); 
}); 

またはさらに

$("ul#gallery li > a").each(function() { 
    (new Image()).src = $(this).attr('href'); 
}); 
+0

これはHTML5や旧式のブラウザでも機能しますか? – Vincent

+0

@ Vincent:はい、画像オブジェクトを使用してものをプリロードすることは、最も古い方法です。私は最後の千年以来それを使用しています:) – Flambino

+0

OKありがとう男。しかし、ドームにイメージタグを追加する必要がありますか?画像オブジェクトは単独で使用できますか?私は現在 'new Image()。src = $(this).attr( 'href');'を使用しています。ありがとう。 – Vincent

関連する問題