在jQuery / JavaScript中删除事件侦听器有什么好处吗?

时间:2015-05-18 14:47:41

标签: javascript jquery performance

我在ASP.NET WebForms应用程序中大量使用jQuery来处理任何非应用程序关键的客户端(例如,即时验证,动画,一般的漏洞和漂亮的东西)。

在此解决方案中,我使用的是更新面板,因此主页很少刷新。因此,事件侦听器可以绑定每个异步回发。

  • 考虑到这一点(或者在任何其他典型情况下),使用.off删除当时我不知道活动的元素上的事件侦听器是否有任何好处?
  • 如果让事件监听器处于活动状态,标准浏览器是否会遭受很多(如果有的话)性能下降,或者只会在绝对极端情况下引人注意?
  • 当我绑定(.off.on等高级元素时,我应该解除绑定(body)吗?

在单个网页的生命周期中多次绑定和解除绑定的场景中,处理(如果需要)未使用的事件侦听器的最佳方法是什么?

如果您有任何测试显示浏览器是否因为众多事件监听器而变慢,请告知我们。如果有人拥有它们,那么经验证的数字将是完美的。

1 个答案:

答案 0 :(得分:-1)

离开非活动事件监听器肯定会对性能产生负面影响。关闭不必要的事件监听器绝对是一种更好的做法。

我还建议您在绑定事件侦听器时使用范围,例如

$(".demo").on("click.test", function(){ ... });

在这里,我使用click确定了test事件的范围,以便在我这样做时

$(".demo").off("click.test");

任何其他具有点击监听器的演示类都不会被关闭。