我附加了一些 live() 侦听器,以便自动对 url 中带有 ajax 的每个链接进行 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() 处理程序的意见是什么?有什么理由说明这是个坏主意吗?