2009-08-08 220 views
0

我有一个超链接与ID单击时将使用JQuery执行某个事件。 JQuery在文档加载中记录这个链接的存在。用户访问过程中的一段时间。我删除该链接并稍后重新添加。但是,即使在删除并添加链接后单击该链接时,该链接也不会再次被触发。再次添加,删除和添加元素删除其事件

为什么是这种情况,我该如何补救?有关事件绑定的事情?或者我应该只添加一个onclick属性?

回答

3

你使用这样的标签添加单击事件被将事件绑定到当时选定的元素。

删除链接并重新添加链接将有效地创建一个新元素,而不会发生此事件。

$('#speciallink').live("click",function(){ 
    // do something 
    return false; 
}); 
+0

+1,使其对所提到的现场活动 – 2009-08-08 20:10:10

+0

第一人:您可以使用“活”的方法来添加将应用于符合此规则的事件规则,创建这些元素,即使创建规则后谢谢!我只是继续学习。 :) – Abs 2009-08-12 09:43:24

1

不要从DOM树中删除链接。相反,只需使用show()和hide()切换其可见性即可。

使用remove()从DOM树中删除元素将删除该元素及其所有事件处理程序,即使您将其添加回相同的id也是如此。

1

您需要将该事件处理程序绑定到添加的新元素,或者您可以使用live()而不是绑定来实现所需。

基本上,事件处理程序引用原始元素。当该元素被删除时,即使新元素添加了相同的ID,它也是一个不同的元素。

0

如果完全删除元素,则在重新创建元素时,需要将任何事件侦听器重新附加到该元素。

或者,只是隐藏通过设置它的样式显示元素:

$('#speciallink').click(function(){ 
    // do something 
    return false; 
}); 

这将:没有与.show().hide()