我以自動爲在URL中與阿賈克斯的每一個環節的Ajax調用附加了一些活的()聽衆:模具()單元素
$("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);
我的問題是,如果現場處理程序被添加到元素的集合,我可以」在這些元素之一上使用die(); die()只起作用,看起來,如果你將它應用到所有使用live()的元素上。
任何人都可以建議一個解決方法,將壓制live()事件?另外,人們對建議jQuery團隊改變die()的行爲有什麼意見,以便它可以用來移除單個元素上的live()處理程序;有沒有任何理由爲什麼這是一個壞主意?
不需要'die()',就像'live()',需要在選擇器之後直接調用嗎?例如'$('a [href^=「/ ajax」]')。die()'是正確的,但'this.die()'不是? – 2010-10-22 16:22:33
這可能是die()方面限制的一個方面,但是如果我用一個選擇器替換它,我發現它的鏈接仍然失敗。問題是,只有一部分活動處理程序被添加到 – wheresrhys 2010-10-22 16:25:44