私がやりたいことは、特定のクラス名を持つすべての画像を見つけて、それらの上にオーバーレイ画像を配置することです。これまでのjQuery 1.2.6での私のスクリプト:
jQuery.noConflict();
jQuery(document).ready( function($) {
var module = $(".module-contactus div div div");
module.find("img.let").each( function() {
var iWidth = $(this).width();
var iHeight = $(this).height();
var letimg = $('<img src="/LET.png" style="position: absolute; top: 50%; left: 50%; margin-top: -' + Math.ceil(iHeight/2) + 'px; margin-left: -' + Math.ceil(iWidth/2) + 'px;" />');
var wrapper = $( '<span style="position: relative; display: inline-block;"></span>' );
$(this).wrap( wrapper );
letimg.appendTo( wrapper );
});
});
はletimgドキュメントに追加されません (Firebug によると)。ただし、span要素は元の画像を正常にラップします。$(this)また、関数に渡すとちょっとうまくいきappendToますが、元の画像の中に追加されます!
編集:マークアップは以下です。(余分な div は Joomla の結果です。)
<div class="module-contactus">
<div><div><div>
<img src="/contact1.jpg" />
<img class="let" src="/contact2.jpg" />
</div></div></div>
</div>
スクリプトの実行後、2 番目のイメージは次のように置き換えられます。
<span style="position: relative; display: inline-block;">
<img class="let" src="/contact2.jpg" />
</span>
ただし、最終的には次のようになります。
<span style="position: relative; display: inline-block;">
<img class="let" src="/contact2.jpg" />
<img src="/LET.png" style="..." />
</span>