是否有任何可能使用“JQuery.on()”的危险

时间:2014-04-09 11:52:14

标签: javascript jquery

我正在为一个大型项目编写Javascript控制器,我发现自己正在使用" JQuery .on()"功能很多,可以处理所有点击事件,因为大部分内容都是动态下载的。

考虑到我使用" JQuery .off()"在再次绑定它们之前取消绑定点击事件,是否存在使用它的任何可能的危险。

$('#container').off('click', '[data-link=some-link-id').on('click', '[data-link=some-link-id]', function () {
     // handle event here...
});

1 个答案:

答案 0 :(得分:1)

在我的经历中,它实际上取决于应用程序。我发现广泛使用jQuery导致浏览器的内存开销很高。从使用堆跟踪到调试(在谷歌浏览器中),我发现这是因为jQuery在内存中保留了大量对象。我发现的主要问题是当你使用jQuery创建DOM节点或应用非标准的javascript遍历或函数时,jQuery必须跟踪这些特定节点。

当涉及到处理程序时,除了普通的javascript之外,不应该有太多的内存开销。我发现在优化方面,每个实例都特定于代码和它必须操作的环境。如果您需要在移动设备上运行代码,那么由于这些环境的内存限制,您需要尽可能降低堆。

我发现,如果您遇到与您怀疑与javascript相关的性能问题,检查堆快照是唯一有效的调试方法。我通常使用以下步骤减少内存占用:

  1. 使用原生javascript代替$('<div>')
  2. 创建任何对象
  3. 尝试删除任何每个循环
  4. 使用ID
  5. 将任何DOM查询更改为本机javascript
  6. 将任何事件处理程序(onclick等)移动到本机javascript或将它们放在相关DOM节点的相关属性中
  7. 从提供的示例中我有点担心数据处理程序,因为根据我的经验,这需要jQuery来跟踪内存中的很多对象。如果我要优化这段代码,我会尽可能多地将这些代码移植到原生JS中。