gpt4 book ai didi

javascript - jQuery 数据表使用实时函数多次调用事件处理程序

转载 作者:行者123 更新时间:2023-11-30 06:39:10 25 4
gpt4 key购买 nike

我正在使用 jQuery 数据表来显示一些数据。每行都有一个编辑按钮,我使用 live() 为它注册了一个点击处理程序,以便它可以使用分页。我是按类(class)做的,因为我必须为每一行做。就像是: Datatables with live click event function

这工作正常,但当用户再次进行搜索并且我发出 ajax 请求以获取一组新结果时,问题就出现了。

我只是用一个新表替换了 dom 中的现有表。现在,当我单击第 1 行时,它弹出第 1 行的编辑对话框。我单击第 2 行,它弹出第 1 行的编辑对话框。我再次单击第 2 行,这次它弹出第 2 行的编辑对话框。

然后我一次又一次地点击第 3 行。在显示第 3 行的对话框之前,它会弹出第 2 行的编辑对话框三次。

这个数量还在不断增加。我不明白如果我用 jQuery 替换 div 中的整个 dataTable 为什么它应该注册多个事件?

以防万一,我在我的对话框初始值设定项中将 autoopen 设置为 false,并显式打开和关闭它。

编辑(更多详细信息):

我在创建一个示例时遇到了困难……但是有更多细节……我发现,因为我使用 live() 函数来跨分页注册调用,所以点击注册机制存在。因此,当我用相同的结构替换表时,由于第一次调用 live(),所以注册了点击功能。但是我默认再次调用 live() 并且现在注册了两个点击事件。然后,当我再次替换时,会注册三个事件点击。在检查点击事件是否已经注册后,我尝试通过使用 jQuery click() 注册事件来克服这个问题。帮助处理多个事件部分,但不会跨数据表页面注册事件。

最佳答案

在使用 live 和 ajax 时遇到过这个问题。我最后做的是在收到 ajax 响应后重新注册事件点击。没有示例,很难推荐解决方案,但想法是使用绑定(bind)/单击(用于默认/初始显示)在页面加载时附加单击事件,然后在成功的 ajax 响应上再次重新注册单击事件。当然,将事件绑定(bind)代码放在函数等可重用组件中,以便于调用。

关于javascript - jQuery 数据表使用实时函数多次调用事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com