我有一个像这样的项目的可视列表:
http://jsfiddle.net/viatropos/XCe3T/1/ http://jsfiddle.net/viatropos/XCe3T/1/
在真实的应用程序中,我总共只加载 200 个项目。但问题是click
即使只有 200 个项目,事件也需要几乎一秒钟的时间来调用处理程序。这mouseover
无论列表中有多少项,事件回调都会立即执行。
我的问题是,无论页面上有多少元素,委托方法不应该一样快吗?我所做的就是这样:
$("body").delegate("a", "click", function(event) { console.log($(event.target).get(0)); return false; }
如果您转到上面的 jsfiddle 示例和 Web 检查器,然后单击渲染结果中的链接,它将添加 200 个以上元素。请注意添加的元素越多,速度就越慢。奇怪的是,如果您从 6000 个项目开始,委托/单击的执行速度比您从 2000 个项目开始并一次添加 200 个直到达到 6000 个要快得多。
你的想法是什么,我如何提高 jQuery 的性能delegate
方法为click
事件? css 是否会导致速度变慢(可能样式太多或布局未优化)?
根据我的经验,重新初始化(取消绑定然后再次绑定事件处理程序)比使用 .live 或 .delegate 更好(性能方面)。
这样您就应该获得所需的性能。
实际上,我会定义一个委托变慢的阈值,删除所有绑定并将事件处理程序重新绑定到现有的元素集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)