我正在使用jQuery(购物车,添加/删除项目)在div中创建和删除HTML。我需要访问此div中链接的.click()
事件,但它仅在页面首次加载时有效 - 删除该链接后重新添加它不响应任何jQuery事件。
我尝试了$j(document).ready(function() {}
内外的功能。重新创建后如何让事件再次在此链接上运行?
答案 0 :(得分:2)
使用.delegate()
代替.click()
(这是.bind('click')
的简称):
$(<root-element>).delegate('a', function () {...});
为所有匹配的元素附加处理程序到一个或多个事件 选择器,现在或将来,基于一组特定的根 元件。
来源:http://api.jquery.com/delegate/
<root-element>
可以是document
元素,或者如果您知道始终存在的元素是document
元素的后代,则最好使用该元素。
答案 1 :(得分:1)
每次覆盖容器div的内容或使用live/delegate/on
设置处理程序时,您需要重新附加事件,具体取决于您使用的jQuery版本。
第二种方法一般比较优雅,但也有缺点。特别是,即使连接到容器,也无法取消级联的默认操作。
答案 2 :(得分:1)
.click()
事件仅适用于调用函数时出现的元素。您需要考虑使用.live()
或.delegate()
将侦听器附加到$(document).ready()
答案 3 :(得分:0)
尝试使用.detach()
代替.remove()
,这将保留事件。或者使用event delegation。