ASP UpdatePanel 中的 jQuery 小部件需要在 ajax 请求后重新初始化是一个常见问题,但是我的问题是在替换 UpdatePanel 中的 HTML 之前事件没有解除绑定。每当您调用 .html("...") 或 .remove() 时,jQuery 都会为您解决这个问题,但 UpdatePanel 不使用 jQuery。
我有弹出元素(在 UpdatePanel 内部),当用户在它们外部单击时需要隐藏这些元素,因此我制作了一个 jQuery 特殊事件来检测何时发生这种情况,但是在 Ajax 请求之后永远不会调用 Teardown 函数。因此,随着时间的推移,不再附加到文档的元素上的事件处理程序越来越多。
我可以让我的小部件初始化函数(在每个 Ajax 请求之后运行),检查分离的元素并取消绑定它们的事件,但我担心这可能会导致其他问题。