我正在使用 jQuery 数据表来显示一些数据。每行都有一个编辑按钮,我用 注册了一个单击处理程序live()
,以便它与分页一起使用。我是按班级做的,因为我必须为每一行做。类似于:
具有实时点击事件功能的数据表
这很好用,但是当用户再次进行搜索并且我执行 ajax 请求以获取一组新结果时,就会出现问题。
我只是将 dom 中的现有表替换为新表。现在,当我单击第 1 行时,它会弹出第 1 行的编辑对话框。我单击第 2 行,它会弹出第 1 行的编辑对话框。我再次单击第 2 行,它会弹出第 2 行的编辑对话框。
然后我一次又一次地点击第 3 行。它在显示第 3 行的对话框之前三次弹出第 2 行的编辑对话框。
这不断增加。我不明白如果我用 jQuery 替换 div 中的整个 dataTable 为什么要注册多个事件?
万一这很重要,我在我的对话框初始化程序中将 autoopen 设置为 false 并且我明确地打开和关闭它。
编辑(更多细节):
我很难创建一个示例......但是更多细节......我发现由于我使用live()
函数来注册跨分页的调用,因此存在点击注册机制。因此,当我用相同的结构替换表时,由于第一次调用live()
. 但是我默认情况下会再次调用live()
,现在注册了两个点击事件。然后当我再次替换时,注册了三个事件点击。click()
在检查单击事件是否已注册后,我尝试通过使用 jQuery 注册事件来克服这个问题。帮助处理多个事件部分,但不跨数据表页面注册事件。