URL に ajax を含むすべてのリンクに対して自動的に ajax 呼び出しを行うために、いくつかの live() リスナーをアタッチしました。
$("document").ready(function() {
$('a[href^="/ajax"]').live('click', call);
});
function call(e, context, link) {
e && e.preventDefault();
link = link || this;
if(typeof link == "string" || !$(link).hasClass("disabled")) {
newObj(SPZ.AjaxCall, link, context);
}
};
しかし、これをオーバーライドしたい場合があるため (コールバック関数を見つけるコンテキストを指定できるようにするため)、これを行うための jQuery メソッドを作成しました。
$.fn.customAjax = function(context) {
return this.die().click(function(e){
call.call(this, e, context);
});
};
$(".save").customAjax(myObj);
私が抱えている問題は、ライブハンドラーが要素のコレクションに追加された場合、それらの要素の 1 つで die() を使用できないことです。die() は、 live() が使用されたすべての要素に適用した場合にのみ機能するようです。
live() イベントを抑制する回避策を提案できる人はいますか? 余談ですが、個々の要素の live() ハンドラーを削除するために使用できるように、jQuery チームが die() の動作を変更することを提案することについて、人々の意見は何ですか。これが悪い考えになる理由はありますか?