基本的なイメージ プールでは、再利用のために img 要素をリサイクルできる必要があります。事前にイメージの合計数がわからないため、必要に応じてプール サイズを拡張してください。
このようなものが動作するはずです:
function getImg( id, src, alt ) {
var pool = document.getElementById( 'image_pool' );
var img = ( pool.children.length > 0 ) ? pool.removeChild( pool.children[0] ) : document.createElement( 'img' );
img.id = id;
img.src = src;
img.alt = alt;
return img;
}
function recycleImg( id ) {
var img = document.getElementById( id );
document.getElementById( 'image_pool' ).appendChild( img.parentNode.removeChild( img ) );
}
非表示の「image_pool」コンテナーをページのどこかに配置して、使用間で再利用された画像を非表示にします。
<div id="image_pool" style="display:none;"></div>
次に、新しい img 要素が必要なときはいつでも、次のように呼び出します。
document.getElementById( 'some_element_id' ).appendChild( getImg( 'my_image_id', 'images/hello.gif', 'alt_text' ) );
そして、あなたがそれを終えたら:
recycleImg( 'my_image_id' );
jQuery の代替
function getImg( id, src, alt ) {
var img;
if( $("#image_pool").children().length > 0 ) {
return $("#image_pool img:first-child").attr( { 'id': id, 'src': src, 'alt': alt } ).detach();
}
return $( "<img />'" ).attr( { 'id': id, 'src': src, 'alt': alt } );
}
function recycleImg( id ) {
$( "#" + id ).detach().appendTo( $("#image_pool") );
}
新しい img 要素が必要な場合:
getImg( 'my_image_id', 'images/hello.gif', 'alt_text' ).appendTo( $( "#some_element_id" ) );
(リサイクルは上記と同じ)