jQuery bind()unbind()和on()和off()

我正在为一个小网站管理工作。

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

我的问题:bind() – unbind()或on()。off()背后的想法只是增加基于客户端的性能还是应该将它用于其他场景? 这个问题的出现是因为我的javascript代码正在增长和增长(约30%),因为解除绑定事件。 而且我认为,有些事情可能不起作用,当用户不进行交互时,我想…

编辑:大多数时候我绑定/解除绑定按键事件,因为我需要diff的箭头键。 场景。

出于性能原因而仅仅为了再次绑定而绑定可能容易出错,并且在大多数情况下会使事情变得过于复杂。

您可以采用更“鸟眼”的方法,在DOM树顶部附近只绑定几个侦听器,然后在触发事件时检查实际点击的内容,而不是在许多特定DOM元素上绑定事件侦听器。

这样你就不会在绑定/解除大量事件监听器上花费CPU,而是在处理事件时(通常不会引人注意)占用小的CPU。

这里将详细介绍: 向页面添加复杂元素时的事件委派与直接绑定

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

绑定解除绑定(如果没有正确完成)可能会产生很难找到的内存泄漏。 如果您正在使用webkit,请使用unbinding与绑定一次获取性能的堆快照,然后您可以做出最佳决策。

这是一个链接:

http://addyosmani.com/blog/taming-the-unicorn-easing-javascript-memory-profiling-in-devtools/

避免不必担心这一问题的一个解决方案,特别是如果您处理不断变化的元素或大量数据,就是在身体中注册您的事件,然后指定一个选择器参数。

像这样:

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

在这里查看更多$ .on() 。