まさに車輪の(以下略)なんですが、
- jQuery使う事最近多い
- jquery_auto.js(リンク先なくなってる!)やyuga.jsを使うまでもない時もある
- こうだったらいいなと思ったこと
- シンプル
- 拡張子の文字数にかかわらずに動く
- input type="image"でも動く
- コード
/** * rollOver on jQuery * rollOver tag:img,input * rollOver class:Over * rollOver FileName:*_o.* * Last modify:20081210 * Licensed:MIT License * @author AkiraNISHIJIMA(http://nishiaki.probo.jp/) */ function rollOver(){ var preLoad = new Object(); $('img.Over,input.Over').not("[@src*='_o.']").each(function(){ var imgSrc = this.src; var fType = imgSrc.substring(imgSrc.lastIndexOf('.')); var imgName = imgSrc.substr(0, imgSrc.lastIndexOf('.')); var imgOver = imgName + '_o' + fType; preLoad[this.src] = new Image(); preLoad[this.src].src = imgOver; $(this).hover( function (){ this.src = imgOver; }, function (){ this.src = imgSrc; } ); }); } $(document).ready(rollOver);- 使い方
-
- 上記のスクリプトファイルを読み込ませる
例) <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script> <script type="text/javascript" src="path/hoge.js"></script>
- ロールオーバー画像名は、ロールオーバー前の画像に”_o”を付けたモノを用意する
例) 【fuga.png】→【fuga_o.png】
- ロールオーバーするimgタグもしくはinputタグにclass="Over"を付ける
例) <img src="fuga.png" alt="" /> ↓ <img src="fuga_o.png" class="Over" alt="" />
- 上記のスクリプトファイルを読み込ませる
_oの画像にclass="Over"としててもチラチラになることはありません。
わかる人には、わかると思います。
ライセンス表記なくて、使用する時に迷ったりすることがよくあるので、
「自由に使ってくださいな」という気持ちで、コメント書いてます。
いつもは、こんなコメント書かないから、書き方正しいかどうかもわかりませんw
ここ間違っとるぞ!とかこここうやったらもっとスマートやぞ!とかあったらよろしく。
2010年1月10日追記:匿名さんのご指摘通り、jQueryの以前のバージョン用で書いてましたので、not部分の@は必要ありません。
4 コメント:
おー!
丁度シンプルでプリロードしてくれるのを探してたところ!
input="image"に使えるのもいいですね。
使わせてもらいます^^
jqueryでのロールオーバーは頻繁につかってます。使いどころは重要ですよね。classあたえず画像の名前だけで判別できるやつを僕はいつもつかってますー
また名前かえてみました
jQueryで、簡単にロールオーバーと思って探してみつけました。
とってもソースがすっきりしました。
本当にありがとうございます。
すでに気が付いていると思いますが、jquery-1.3.2 で動作させようとしたら、
$('img.Over,input.Over').not("[src*='_o.']").each(function(){
と @ をとらないとだめでした。
匿名さん
コメントありがとうございます。
ご指摘の通りですね。
エントリが古いのもあるので、追記とかしないとですね〜。
きちんと見てくれる方がいらっしゃるってことはありがたいっすね〜。
ログイン忘れちゃう位放置してますが、ちゃんとしないとっすね。
コメントを投稿