2

在我编写的桌面 html5 应用程序中,我总是使用 jquery,尽管我正在编写移动 html5 应用程序,我想知道是否应该使用 jquery。

首先,我对选择器很好奇。我在 jsfiddle 上做过实验,测试了 $('#item') 和 document.getElementById('item') 之间的速度差异。从统计上我得出的结论是 $('#item') 比 document.getElementById 慢。出于这个原因,我想完全切换到不使用 jQuery 编写代码,但是我在这里阅读了这个问题:

`on` 和 `live` 或 `bind` 有什么区别?

在绑定方面,使用 jQuery 的 .on() 方法非常有效。jQuery 的 .on() 方法是否比 addEventListener() 更快?如果我不断添加和删除这个 div 的倍数呢:

<div class="item"></div>

到 DOM。在普通的 javascript 中,每次我添加一个带有类项的新 div 时,我都必须为该新 div 重新绑定,但使用 .on() 它会自动为我完成。这一切都更有效率吗?

4

2 回答 2

3

jQuery 的 .on() 方法是否比 addEventListener() 更快?

.on()是根据 定义的.event.add(),它使用addEventListener。一方面,addEventListener由于参数检查和管理的开销,这些函数比直接调用要慢。另一方面,.event.add()确保addEventListener尽可能避免调用。

在您的具体示例中(添加项目、绑定事件处理程序、删除项目),我希望 jQuery 执行速度较慢,因为其成本.event.add()超过其收益。然而,衡量往往比假设好

还要记住,jQuery 的目标是非常便携。例如,它包含Firefox 事件调度错误的解决方法。自己测试和规避这些浏览器错误可能不值得您花时间开发。

于 2013-01-10T19:50:25.793 回答
1

已经有许多测试显示了使用 jQuery 和本机以及其他库之间的差异。基本概念是包装器几乎总是比本机函数慢,因为它们会产生额外的开销。这里有些例子:

http://jsperf.com/node-create-native-jquery-yui/3

于 2013-01-10T19:40:55.317 回答