jQuery 和清除事件监听器

标签 jquery events event-listener

我有一个自行创作的内部网格,它显示一组数据并订阅多个事件(例如,行单击事件、列单击事件)。每次调用网格构建函数时,第一行代码都是 $grid.empty(),它不仅应该在物理上清空网格中的 DOM 元素,而且还应该解除这些事件的绑定(bind)。我的下图显示了事件监听器缓慢但稳定的增长。上升趋势是数据被加载到网格中并且事件被连接起来。每个查询平均增加 10-11 个事件监听器。并不可怕,但在一小时内它就会使应用程序无法使用。我是否遗漏了什么或寻找错误的路径?如有任何帮助,我们将不胜感激。

Event Listener Graph in Google Chrome Dev Tools

更多信息:我发现我的 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/

相关文章:

javascript - 向 highcharts 饼图图例中的列添加标签

javascript - 使用 jquery 解析 Json - 未获取值

c# - 在 DataGridView 中触发复选框值更改事件

jquery - 单击图像不会在 chrome 中加载

javascript - 使用 Javascript 和 Jquery 更改样式表中的背景图像

css - Angular - 带滚动条的 slider

C# = MenuItem.Click 处理程序 - 获取上下文菜单所属的对象?

java - 什么是 java.util.EventListener?

加载时调用的 JavaScript EventHandlers

javascript - jquery 事件监听器在刷新我的 jquery 数据表后不起作用?