「jQuery」カテゴリーアーカイブ

【jQuery】jQueryRotate.jsがIE8で動かなかった件(解決)

某ページで画像を回転させる必要があって、見つけたのがコレ。

jQueryRotate – rotate image in browser by any angle

【参考】
いろんな画像をクルックルクルックル回すイケイケjQueryプラグイン 「jQueryRotate」 | うずまきブログ
アナログ時計をJavaScriptで作ってみた

IE6以降対応ってことで楽勝だと思っていたら、IE8で動かなかった。。。厳密には1回だけ回ってくれるけど、それ以降はまったく無反応。具体的にはこんな関数をクリックイベントに割り当ててました。

【JavaScript】

var rotateImg = 0;

//画像回転処理(右)
function clickTiltRightFunc(){
	rotateImg += 90;
	rotateImg = (rotateImg >= 360) ? 360 - rotateImg : rotateImg;
	
	$("#thumbImg img").rotate(rotateImg);
	$('input[name="rotateImg"]').val(rotateImg);
}

【html】

<div class="photo" id="thumbImg">
 <img src="xxxx.jpg">
</div>

公式サイトを改めてIE8で見たら「動いてないじゃん!」となったんだけど、「公式サイトのjQueryが2.xだから」と某所から指摘を受けて納得。

【参考】
jQuery 2.0がついに正式リリース。IE8以前はサポートせず、より軽量で高速に - Publickey
jQueryのバージョン1.xと2.xの違いは対応ブラウザ。Win XPつまりIE8以下・6以上のサポートが必要なら1系を使い,モダン・スマホサイトは2系を使う – プログラミングとIT技術をコツコツ勉強するブログ

で、いろいろ試してみて気づきました。IE8ではimgタグを直接指定しないとダメらしい。つまり $(“#thumbImg img”) のようなサイン省参照ではなく、直接imgタグにidをつけてそのidに対してrotateするということです。

改定版がこちら。

【JavaScript】

var rotateImg = 0;

//画像回転処理(右)
function clickTiltRightFunc(){
	rotateImg += 90;
	rotateImg = (rotateImg >= 360) ? 360 - rotateImg : rotateImg;
	
	$("#thumbImg").rotate(rotateImg);
	$('input[name="rotateImg"]').val(rotateImg);
}

【html】

<div class="photo">
 <img src="xxxx.jpg" id="thumbImg">
</div>

たったコレだけなんですけど、意外とハマったのでメモしておきます。