添加,删除和添加元素会再次删除其事件

时间:2009-08-08 19:59:27

标签: javascript jquery

我点击时带有ID的超链接将使用JQuery执行某个事件。 JQuery在文档加载时记录此链接的存在。在用户访问过程中的某个时间。我删除了该链接,稍后重新添加。但是,在删除并添加链接后单击该链接时,甚至不会再次触发。

为什么会这样,我该如何解决?事件绑定有什么关系?或者我只是添加一个onclick属性?

4 个答案:

答案 0 :(得分:3)

您一直在使用这样的标记来添加点击事件:

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

这会将事件绑定到当时选择的元素。

删除链接并再次添加它将有效地创建一个新元素,而不会发生此事件。您可以使用“实时”方法添加将应用于与规则匹配的事件的规则,即使在创建规则后创建了这些元素:

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

答案 1 :(得分:1)

不要从DOM树中删除链接。而只是通过show()和hide()切换其可见性。

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

或者,只需隐藏元素,方法是将其样式设置为显示:无.show().hide()