您好我刚刚开始尝试使用.live和.die并获得了一些很好的结果,但有一点是行不通的。
我一直在修补firebugs控制台以试用我的书面代码,看看我是否能找出原因.die并没有杀死附加事件。
首先,如果我这样做
//attach ajax submission
$('a[href$=edit]').live("click", function(event) {
$.get($(this).attr("href"), null, null);
return false;
});
然后按照预期,当我点击链接时,ajax会关闭,我的服务器端代码会注入一个用于内联编辑的表单。
但有时我想禁用此行为并使链接无法点击,因此我执行以下操作
//unbind ajax form creation when we click on a link, then disable its semantic behaviour
$('a[href$=edit]').die("click").click( function(){ return false; } );
哪个有效但是如果然后尝试删除它并使用下面的代码恢复ajax良好不起作用,而是链接仍然无法点击。我弄清楚为什么?有人可以帮忙吗?
//remove any previous events from the links
$('a[href$=edit]').die();
//attach ajax submission
$('a[href$=edit]').live("click", function(event) {
$.get($(this).attr("href"), null, null);
return false;
});
答案 0 :(得分:1)
你必须这样做:
$('a[href$=edit]').die().unbind('click');
您的代码.click( function(){ return false; } );
的这部分不是.live()
,而是正常的.bind('click')
声明,因此您需要使用.unbind('click')
将其删除。
答案 1 :(得分:1)
die()
仅适用于live()
绑定的事件。
您return false
事件是使用click()
绑定的,bind()
是{{1}}的替代面孔。以这种方式绑定的事件需要使用unbind()
解除绑定。
答案 2 :(得分:1)
点击,直播(点击)没有相同的内部工作方式:
调用 die 是生活的对应物:你停止模式#2,而不是模式#1
如果要删除通过模式#1添加的事件,则需要调用取消绑定
Jerome Wagner