解除对所有元素的所有jQuery事件的性能影响

时间:2015-01-22 18:30:26

标签: javascript jquery memory jquery-selectors

我有一个单页“shell”应用程序,可以加载多个模块,所有模块都有多个视图。我不一定知道或控制加载哪些模块或视图,可以自定义(添加/删除操作,添加dom元素等)。

由于它是SPA,我想在关闭每个视图时取消绑定所有事件,以避免高内存使用或泄漏。但我不知道哪种类型的事件与哪个元素绑定,所以在CloseView(),我这样做:

$(this.accessor + ' *').unbind();

本质上是$('#myView *').unbind() - 取消绑定所有页面元素的所有事件

有时选择器会产生~20个DOM元素,但我看到了 320 元素的高度。平均值似乎在30左右。

为清晰起见编辑:

我是否应该担心选择300多个元素并解除所有事件的绑定会导致性能问题?

1 个答案:

答案 0 :(得分:0)

事实证明,jQuery' $('#el').remove(); 删除了#el树中绑定的所有事件,因此这基本上不是问题。 (感谢@KevinB的回答)