blog.sowatchasayin

Rails etc.

live with no boundaries

jQueryでは.bind()でイベントハンドラを登録できます。
Ajax Requestで帰ってきたエレメントにもイベントハンドラをくっつけてあげたいので、.ready()以外にもajaxCompleteでglobalなcallbackをつけてあげました。

function init(){
bindEvent1(); //色々bindしている
bindEvent2();
bindEvent3();
};
$(document).ajaxComplete(init);
$(init);

すると、Ajax Requestごとに、イベントハンドラが増えるじゃないですか。

調べてみると、.live()ってメソッドで重複なしのイベントハンドラ登録ができるみたい。.bind()から.live()に書き換えたら、無事重複は無くなりました。


Global callback for Ajax calls in JQuery

.live()はこちらで発見

.live() – jQuery API
Ajax Events
Ajax callbackについてはこちら。

ちなみにprototype.jsで同じ事をやるならこうかしら

function init(){
bindEvent1();
bindEvent2();
bindEvent3();
};
window.onload = init;
Ajax.Responders.register({
onComplete: init
});

No comments:

Post a Comment

Author

Fujimura Daisuke
http://fujimuradaisuke.com

Labels