我有一个自行创作的内部网格,它显示一组数据并订阅多个事件(例如,行单击事件、列单击事件)。每次调用网格构建函数时,第一行代码都是 $grid.empty(),它不仅应该在物理上清空网格中的 DOM 元素,而且还应该解除这些事件的绑定(bind)。我的下图显示了事件监听器缓慢但稳定的增长。上升趋势是数据被加载到网格中并且事件被连接起来。每个查询平均增加 10-11 个事件监听器。并不可怕,但在一小时内它就会使应用程序无法使用。我是否遗漏了什么或寻找错误的路径?如有任何帮助,我们将不胜感激。
更多信息:我发现我的 jQuery 函数调用最后没有清除变量。示例:
$.fn.myCustomFunction = function(parm) { var grid = this; {some more code, AJAX call };
最后我需要一个 grid = null 。然而,由于它的上下文,它完全清空了我的网格。
最佳答案
使用委托(delegate):
$grid.on('click','tr',function(){
//code stuff here
});
关于jQuery 和清除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812707/