2013-04-17 3 views
14

私は、特定の要素(div)の中に(ブラウザがそれらをロードし終えると)プロパティ 'complete'を持つ画像の数を探したいと思います。「完全な」画像の数はどのようにして確認できますか?

私はこれを1時間以上悩まされていました。私の脳は完全に揚げられています。いくつかの助けが大いに感謝していますcompleteImagesが持っている<img>要素の配列で、このコードが実行された後

var container = document.getElementById("div_id"), 
    images = container.getElementsByTagName("img"), 
    completeImages = [], 
    j = images.length, 
    i, cur; 
for (i = 0; i < j; i++) { 
    cur = images[i]; 
    if (cur.complete) { 
     completeImages.push(cur); 
    } 
} 

おかげ

+0

を多分これは役立つだろうhttp://stackoverflow.com/questions/4958081/find-all-elements-with-a-certain-attribute-in-jquery – AliBZ

答えて

13

は、あなたがこれを使用することができ、completeプロパティで画像を見つけるためにあなたの即時の質問に答えるために、 completeプロパティはtrueです。 jQueryを使って

、あなたが使用できます。

この場合
var images = $("#div_id").find("img").filter(function() { 
    return $(this).prop("complete"); 
    // or 
    return this.complete; 
}); 

imagesを、trueとしてcomplete性質を持っている<img>要素のjQueryオブジェクト(配列のようなオブジェクト)です。

代わりcompleteプロパティを確認する、別のオプションは、彼らは彼らのために特別なデータをロードし、設定したときに検出するloadイベントを使用することです:

$("#div_id").on("load", "img", function() { 
    $(this).data("image-complete", true); 
}); 

と何がロードされる/アウト見つける:

<img> sの信頼性 loadイベントは完全にサポートされていないことを
$("#div_id").find("img").filter(function() { 
    return $(this).data("image-complete"); 
}); 

注/:http://api.jquery.com/load-event/ - loadイベントの「警告までスクロールIMAGで使用した場合es "セクションを参照してください。

+2

ありがとう、ここにたくさんの有益な情報があります。 '.load'はもともと試していたものですが、画像が動的に追加されるので問題に遭遇し、キャッシュされた画像は' .load'で登録されません。私は '.filter'メソッドを使用して終了し、それは素晴らしい動作します。 それが理にかなっていれば、私はより多くのことを知ることができれば分かるようです。 –

2

また、クラスを使用して同じ動作を再作成することができ -

$("img").load(function(){ 
    $(this).addClass('complete'); 
}); 

今、あなたはあなただけのこのセレクタを使用することができますロードされているどのように多くの画像を見たい時はいつでも -

$("img.complete").length 
+1

これは最初に読み込まれた画像でのみ動作しますか?私が扱っているイメージは動的に追加されているので、 '.load'の代わりに 'complete'プロパティを使用しています。 '.load'を使って試したところ、チャージされた画像は影響を受けていませんでした –

関連する問題