我附加了一些live()监听器,以便自动对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);我遇到的问题是,如果将live处理程序添加到一个元素集合中,我就不能只在其中一个元素上使用die();如果您将它应用于使用live()的所有元素,那么die()似乎只能起作用。
有没有人能建议一种可以抑制live()事件的变通方法?另外,人们对建议jQuery团队改变jQuery()的行为,以便它可以用来删除单个元素上的live()处理程序有什么看法;有什么理由认为这是一个坏主意吗?
发布于 2010-10-23 00:39:11
再多尝试一下,我发现在我的jQuery方法的末尾添加一个简单的return false确实起到了作用。如果我想为同样的点击附加其他监听器,这将会带来问题,但现在可以了。
https://stackoverflow.com/questions/3998793
复制相似问题