2013-01-10 48 views
2

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

首先,我对选择器很好奇。我已经做了jsfiddle的实验,并测试了$('#item')和document.getElementById('item')之间的速度差异。统计我已经得出结论,$('#item')比document.getElementById慢。出于这个原因,我想完全切换到写我的代码,而无需jQuery的,但我读到这里就这一问题:

What's the difference between `on` and `live` or `bind`?

,当涉及到结合,使用jQuery的。对()方法是非常有效的。 jQuery的.on()方法比addEventListener()更快吗?那么如果我不断地添加和删除这个div的倍数:

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

到DOM。在普通的JavaScript中,每当我添加一个新的div与类的项目,我不得不重新绑定新的div,但与.on()它自动为我做。这是否更有效率?

+1

为什么性能是您考虑的唯一标准? – delnan

+9

这是**过早优化的一个很好的例子。**移动设备上的jQuery不一定是个问题;实际上整个面向移动的框架都建立在它的基础之上。 – Pointy

+3

运行测试并找出自己。 jsperf是一个很好的资源。 – epascarello

回答

3

是jQuery的。对()方法比快的addEventListener()?

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

在您的具体示例中(添加项目,绑定事件处理程序,删除项目),我期望jQuery执行速度较慢,因为.event.add()的成本大于它的好处。但是,通常比衡量要好。

还要记住,jQuery的目标是非常便携。例如,它包含a workaround for a Firefox event dispatch bug。它可能不值得你的开发时间来测试和规避自己的浏览器错误。