【发布时间】:2012-01-30 03:06:16
【问题描述】:
我有一个 DIV,里面有很多内容,我使用 detach() 和 after() 将它放在文档中的其他位置。
在此之前,我使用 .bind() 将一些点击事件放在 DIV 内的复选框上。
这似乎工作正常。
当我完成 DIV 后,我将它放回原来的位置。但是,当我再次使用相同的 .detach() 和 after() 方法时,我的点击处理程序似乎消失了。
这是 detach() 的正常行为吗?是否有适当的方法来保存事件?
对于好奇的人,我的 DIV 包含一个表单,该表单使用绑定单击在复选框上具有一些验证功能。分离用于将表单放置在模式对话框中,并在用户关闭对话框时将其放回隐藏的 DIV。当用户再次打开带有表单的对话框时,我会遇到点击事件丢失的情况。
【问题讨论】:
-
jQuery
detach()应该维护与元素相关的事件处理程序和数据:你能用简化的小提琴重现这个问题吗? -
不,
detach将保留事件处理程序,请查看文档。如果您遇到问题,那一定是其他问题。 -
问题:bind("click") 是否被视为 jQuery 数据?我只是想知道我是否需要使用 detach() 而我可以使用 remove() 代替。
-
@Matthew,是的:查看api.jquery.com/detach 中的实时示例,单击处理程序始终有效。
-
发布 jQuery 和 HTML 的相关部分可能会有所帮助。
标签: javascript html jquery