Javascript jQuery bind()取消绑定()和on()以及off()

Javascript jQuery bind()取消绑定()和on()以及off(),javascript,jquery,performance,events,bind,Javascript,Jquery,Performance,Events,Bind,我在一个小的网页管理区工作 解除事件绑定以提高性能(客户端)有意义吗?或者,取消绑定事件并在30秒后再次绑定它是否会提高性能 我的问题是: bind()-unbind()或on().off()背后的思想是提高基于客户端的性能,还是应该将其用于其他场景?这个问题是因为我的javascript代码由于解除绑定事件而不断增长(大约30%)。我认为,当用户交互时,有些事情可能不起作用,正如我所希望的 编辑:im绑定/解除绑定按键事件的次数最多,因为我需要不同场景的箭头键。如果您尝试绑定和解除绑定,您正

我在一个小的网页管理区工作

解除事件绑定以提高性能(客户端)有意义吗?或者,取消绑定事件并在30秒后再次绑定它是否会提高性能

我的问题是: bind()-unbind()或on().off()背后的思想是提高基于客户端的性能,还是应该将其用于其他场景?这个问题是因为我的javascript代码由于解除绑定事件而不断增长(大约30%)。我认为,当用户交互时,有些事情可能不起作用,正如我所希望的


编辑:im绑定/解除绑定按键事件的次数最多,因为我需要不同场景的箭头键。

如果您尝试绑定和解除绑定,您正在为垃圾收集器创建竞争条件,以便它实际进入并清理您的代码。最好绑一次,不要再绑了。 如果您的客户端预计会运行很长一段时间(数周、数月),那么您应该将内存管理和内存泄漏视为对性能的更多关注

绑定解除绑定(如果未正确执行)可能会产生难以发现的内存泄漏。如果您使用的是webkit,请使用解除绑定和绑定两种方式对性能进行一次堆快照,然后您就可以做出最佳决策

这里有一个链接:


出于性能原因,仅解除绑定以再次绑定可能容易出现错误,并且在大多数情况下会使事情过于复杂

与在许多特定DOM元素上绑定事件监听器不同,您可以采取更“鸟瞰”的方法,只绑定DOM树顶部附近的几个监听器,然后在触发事件时检查实际单击的内容

这样,您就不会在绑定/解除绑定大量事件侦听器上花费CPU,而是在处理事件时占用少量CPU(这通常是不明显的)


这里详细介绍了这一点:

一种解决方案是在正文中注册事件,然后指定一个选择器参数,以避免担心这一点,特别是在处理不断变化的元素或大量数据时

像这样:

$("body").on("click", ".my-actual-element", function(aEvent) {
   // Event handler code goes here.
});

请参阅此处的更多信息。

如果您没有进行实际测量,那么出于性能原因添加代码就没有多大意义。我如何进行测量?Chrome developer工具和Firefox Firebug都有探查器。过多的事件处理程序是否会导致任何性能问题是非常值得怀疑的,但探查器将是找出问题的方法。如果有许多元素需要附加相同的事件,则将委托处理程序附加到公共父元素可能会更快。但是,在编写一些代码之前,不可能进行测试。