首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过度使用"JQuery.on()“是否有潜在的危险?

问过度使用"JQuery.on()“是否有潜在的危险?
EN

Stack Overflow用户
提问于 2014-04-09 19:52:14
回答 1查看 159关注 0票数 0

我正在为一个大型项目编写Javascript控制器,我发现自己经常使用"JQuery .on()“函数来处理所有的点击事件,因为大多数内容都是动态下载的。

考虑到我在再次绑定点击事件之前使用了"JQuery .off()“来解除它们的绑定,是否存在大量使用它的潜在危险。

代码语言:javascript
复制
$('#container').off('click', '[data-link=some-link-id').on('click', '[data-link=some-link-id]', function () {
     // handle event here...
});
EN

回答 1

Stack Overflow用户

发布于 2014-04-09 20:08:05

在我的实践中,这真的取决于应用程序。我发现广泛使用jQuery会给浏览器带来很高的内存开销。通过使用堆跟踪进行调试(在google chrome中),我发现这是因为jQuery在内存中保留了大量对象。我发现的主要问题是,当您使用jQuery创建DOM节点或应用非标准javascript遍历或函数时,jQuery必须跟踪这些特定节点。

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

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

使用原生javascript代替$('<div>')

  • Try创建任何对象,并删除任何循环
  1. 使用IDs将任何DOM查询更改为原生javascript
  2. 移动任何事件处理程序(onclick等)或者将它们放在相关DOM节点的相关属性中(

)。

在提供的示例中,我有点担心数据处理程序,因为根据我的经验,这将需要jQuery跟踪内存中的大量对象。如果我要优化这段代码,我会尽可能多地将这些代码迁移到原生JS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22961671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档