2008年7月18日金曜日

[jQuery] 名前空間(namespace)でイベントを管理する

使えそうなのでメモメモ。

jQuery namespaced event binding/unbinding
(http://codesnippets.joyent.com/posts/show/1345)

jQueryを使ってイベントを追加する場合は大抵こんな感じで書く:

jQuery('.class').click(function(){//whatever});

上のコードは下のように書くこともできるのはみんな知ってるよね:
jQuery('.class').bind('click', function(){//whatever});

でも時々イベントを削除したくなる場合がある:
jQuery('.class').unbind('click', function(){//});

で、問題なんだけど、こうやってイベントを削除すると、その要素に登録されている全部のイベントが削除されちゃうってこと。(無名関数を特定する手段がないからね)

でも、jQueryは賢いから、これを制御する方法がある。イベントに名前空間を指定してあげればいいんだ。
jQuery('.class').bind('click.namespace', function(){//}); 
jQuery('.class').unbind('click.namespace');

AJAXによって登録されたイベントを再初期化する場合はこんな感じ:
jQuery('.class').unbind('click.namespace').bind('click.namespace', function(){//});

0 件のコメント: