TOP > 技術系 > javascript >

prototype.jsでthisとかbindとかキャッシュとか

このエントリーをはてなブックマークに追加

激しくはまったのでメモ。

hoge.prototype.initialize = function() {
	var div = document.createElement("div");
	div.innerHTML = "hoge";
	this.div_ = div;
	Event.observe( this.div_ , 'mousedown', function(e){
		alert(this.innerHTML);//何が出るかな
	},false)
}

alertはFirefoxだと『hoge』が出力されるけどIEだとundefined。

IEだとthisに何が入ってるか調べようとしたらえらい目にあったわけで。

とりあえずthisになにが入ってるか調べるのはあきらめる。elementかな。

mausedownした際にそのオブジェクトのプロパティも取得したいわけで調べるとbindすればよいらしい。

参考:prototype.jsのbindを理解する

hoge.prototype.initialize = function() {
	var div = document.createElement("div");
	div.innerHTML = "hoge";
	this.div_ = div;
	Event.observe( this.div_ , 'mousedown', this.dragable.bindAsEventListener(this), false );
}
hoge.prototype.dragable(e){
	alert(this.div_.innerHTML)
}

で目的の通りFirefox,IE共に『hoge』が出力される。

複数の要素を一緒が移動できるドラッグアンドドロップの処理を作ってたんだど、

Event.observe( window.document, 'mousemove', this.mouseMoving.bindAsEventListener(this),false)

Event.stopObserving( window.document, 'mousemove', this.mouseMoving.bindAsEventListener(this),false)

でイベントを取り消せない。

これまた調べると、

Event.stopObservingが効かない・動作しない・削除できない。

ということで関数を一度変数に入れてキャッシュすればよいらしい。

そもそも、イベントハンドラ=関数という実装が好きじゃないな。

そんな今日この頃。

スポンサードリンク

javascriptに関するエントリー

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: prototype.jsでthisとかbindとかキャッシュとか

このブログ記事に対するトラックバックURL: http://www.kazumanishihata.com/mt/mt-tb.cgi/275

コメントする

関連エントリー

スポンサードリンク

グルメ

  • 鶴丸のカレーうどん
  • めりけんや[うどん][高松]
  • 凱陣
  • 北古馬場 ごえもんのカレーうどんで〆 [高松]
  • かき揚げ
  • うどん
  • みのりんご[原宿][カレー][ランチ]
  • 第2回ご当地パン祭りで優勝したクロワッサンB.C
  • テール
  • 〆は冷やし讃岐

よく食べに行く場所

このブログ記事について

このページは、西畑一馬が2008年7月10日 23:12に書いたブログ記事です。

ひとつ前のブログ記事は「IEでスクリプトデバッガを削除する。」です。

次のブログ記事は「アルカナ・コレクション」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。