是否存在使用“;JQuery.on()"大量地
Is there any possible danger of using "JQuery.on()" profusely
我正在为一个大型项目编写Javascript控制器,我发现自己经常使用"JQuery.on()"函数来处理所有点击事件,因为大部分内容都是动态下载的。
考虑到我在再次绑定点击事件之前使用"JQuery.of()"来解除它们的绑定,大量使用它是否有任何可能的危险。
$('#container').off('click', '[data-link=some-link-id').on('click', '[data-link=some-link-id]', function () {
// handle event here...
});
在我的实践中,这实际上取决于应用程序。我发现大量使用jQuery会导致浏览器的内存开销很高。通过使用堆跟踪进行调试(在googlechrome中),我发现这是因为jQuery在内存中保留了很多对象。我发现的主要问题是,当您使用jQuery创建DOM节点或应用非标准的javascript遍历或函数时,jQuery必须跟踪这些特定的节点。
当涉及到处理程序时,除了普通的javascript之外,不应该有太多的内存开销。我发现,在优化方面,每个实例都是特定于代码和它必须操作的环境的。如果你需要代码在移动设备上操作,那么你需要保持尽可能低的堆,因为这些环境的内存限制。
我发现,如果您遇到的性能问题怀疑与javascript有关,那么检查堆快照是唯一有效的调试方法。我通常使用以下步骤来减少内存占用:
- 使用本机javascript代替
$('<div>')
创建任何对象 - 尝试删除所有每个循环
- 使用ID将任何DOM查询更改为本机javascript
- 将任何事件处理程序(onclick等)移动到本地javascript,或将它们放置在相关DOM节点的相关属性中
从提供的例子来看,我会对数据处理程序有点担心,因为根据我的经验,这需要jQuery跟踪内存中的许多对象。如果我要优化这段代码,我会尽可能多地将其中的代码迁移到原生JS中。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- window.on.scroll事件未启动
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- 我怎么能读“;.on()"jQuery中的方法参数
- Ruby on Rails屏幕抓取错误-“;您必须在浏览器中启用javascript才能使用此应用程序"
- 如何使用JQuery's”;.on()"方法来处理非本机jquery元素
- jQuery:"点击“;绕过了.on()函数中的param
- JS-angular为什么使用“ng click=”;f()"`属性,而不是`$(el).on('cl
- "上下文”;Firebase.on的参数不起作用
- jQuery-如何使用;on()"方法代替“;live()”;
- 是否存在使用“;JQuery.on()"大量地