jQueryでツールチップみたいなの

JavaScriptでリンクにマウスオーバーしたら、ツールチップを出すようにしたいんだけど。
ツールチップの中身はHTMLで好きに変えれるように。

ってな感じの事を言われたので、色々調べてやってみました。
JSはあんまし触った事ないし、とりあえずjQuery使ってやったら出来るかも、みたいな浅い知識しかないわけですけど、
なんとか出来ました。

なんでjQueryなの、とかは聞かないで下さい

まずはとりあえずググってみた。
すると、こういったものがあった。

CSSとjQueryを使ってマウスオーバー時にポップアップ表示にするTooltips | CSS Lecture

おー!まさに!!といった動きなんですが、問題が。
これだと、ポップアップの中身がHTMLで書けないんです。
実際にポップアップするところのソース。

HTML:
  1. <a href="#cssLecture" title="サンプルリンク1">サンプルリンク</a>

デモのページを見てもらえばわかるとおり、このやり方は、aタグのtitleの中身をポップアップする仕様です。
なので、titleの中でタグを展開するわけにもいかず…。

で、他にも色々見てたんだけど、なかなかドンピシャのものがなかったので、作ってしまおう、と。
そんなこんなで出来たものがこれ。

サンプル

jQueryは今日時点で最新のものを使用しています。(v.1.3.2)

JavaScriptのソース。

JavaScript:
  1. //tooltip.js
  2.  
  3. $(document).ready(function(){
  4.  
  5.     var a_ele = $("a.tooltip");
  6.    
  7.     a_ele.mouseover(function(e){
  8.         var name = e.target.name;
  9.         var div_ele = $("div#" + name);
  10.         div_ele.css({"opacity":0, "display":"block"});
  11.         div_ele.fadeTo("fast", 0.9);
  12.     });
  13.     a_ele.mousemove(function(e){
  14.         var name = e.target.name;
  15.         var div_ele = $("div#" + name);
  16.         var x = e.pageX + 20;
  17.         var y = e.pageY;
  18.         div_ele.css("left", x);
  19.         div_ele.css("top", y);
  20.     });
  21.     a_ele.mouseout(function(e){
  22.         var name = e.target.name;
  23.         var div_ele = $("div#" + name);
  24.         div_ele.css({"display":"none"});
  25.     })
  26. });

全然たいした事はやってなくて、要するに、
リンクにマウスオーバーしたら指定のidのdivブロックを表示してポジションを変えて、
マウスムーブしたらそのポジションを更新して、
マウスアウトしたら、そのブロックを非表示にする、って感じです。

マウスアウトした時にフェードアウトさせようと思ったけど、
なんか動きがおかしくなったのでやめました。

HTMLはこんな感じ。

HTML:
  1. <a href="#" class="tooltip" name="tip1">jQuery tool tip test</a><br />
  2.  
  3. <div id="tip1" class="mainText">TEST POP UP ver1.0</div>

classにtooltipって名前があるものが対象となって、nameで指定したidを持つdivをポップアップ表示させます。
なので、複数作る場合はこう。

HTML:
  1. <a href="#" class="tooltip" name="tip1">jQuery tool tip test 一つ目</a><br />
  2. <a href="#" class="tooltip" name="tip2">jQuery tool tip test 二つ目</a><br />
  3. <div id="tip1" class="mainText">ポップアップ一つ目</div>
  4. <div id="tip2" class="mainText">ポップアップ二つ目</div>

デモ

この複数ある時にそれぞれ指定したポップアップを出す部分が結構悩んだ。

あとは、divの中を好きに変えたらいいんではないかと。
classはポップアップに関係ないので、ここでCSSの指定をしてもらったら良いと思います。

何かありましたらコメント下さい。

参考リンク:
jQuery 1.3.2 日本語リファレンス
jQuery入門