[mootools] Tips Bug fix – “element.getParent is not a function”

MooTools More1.2.4.2のツールチップ表示クラスTipsにあるバグの修正方法について。

主な症状

ツールチップ表示を有効にした要素にマウスオーバーしてからマウスアウトすると、
FireBugで element.getParent is not a function というエラーが出る。というもの。
(圧縮してあるとelementがbになる)
エラー行数は1142行目(未圧縮)
エラーは最初の1度しか出ない。

修正方法

原因となっているTipsのfireForParentメソッドを入れ替える。

ver 1.2.4.2 Original Code:

fireForParent: function(event, element){
	if (!element) return;
	var parentNode = element.getParent();
	if (parentNode == document.body) return;
	if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', event);
	else this.fireForParent(parentNode, event);
}

Fix Code:

fireForParent: function(event, element){
	if (!element) return;
	var params = Array.link(arguments, {event: Event.type, element: Element.type});
	var parentNode = params.element.getParent();
	if (parentNode == document.body) return;
	if (parentNode.retrieve('tip:enter')) parentNode.fireEvent('mouseenter', params.event);
	else return this.fireForParent(parentNode, params.event);
}

参照元:Tips: “element.getParent()” not working, because “element” is of type Event
このバグは1.2.4.3で修正される予定。

[jQuery]イメージマップでTooltip表示するサンプル

「イメージマップのホットスポットにマウスオーバーしたら説明表示出るように出来ない?」って言われて書いたやつ。
非表示にしてるブロック要素を表示してるだけなので、画像とかテキストとか割とフリーダムに出せる。

jQuery1.2.6用。

jQueryのマウスイベントには以下プロパティ提供されていて

  • pageX/Y : ページの左上を0としたマウスポインタの位置
  • clientX/Y : ブラウザのドキュメント表示領域を0としたマウスポインタの位置

特別なことしなくてもイベントが発生した時のマウスポインタの位置を取得することが出来る。
“[jQuery]イメージマップでTooltip表示するサンプル” の続きを読む