我点击时带有ID的超链接将使用JQuery执行某个事件。 JQuery在文档加载时记录此链接的存在。在用户访问过程中的某个时间。我删除了该链接,稍后重新添加。但是,在删除并添加链接后单击该链接时,甚至不会再次触发。
为什么会这样,我该如何解决?事件绑定有什么关系?或者我只是添加一个onclick属性?
答案 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)