2011-08-11 13 views
1

我正在构建一个包含大量事件绑定的HTML5移动应用程序。因为它也有一个大的DOM,通常由于数据绑定而发生变化,所以直接绑定事件(jQuery.bindaddEventListener)可能不是一个好选择。什么是之间的平衡:哪一个更高性能:jQuery.live()或inline onevent属性?

// jQuery.bind 
$("div").live("click", fnName); 

// Inline 
<div onclick="fnName(this);"></div> 

虽然我最感兴趣的是移动的WebKit的具体情况,我很有兴趣了解其它浏览器票价为好。

+0

你打算如何衡量表现网页加载或响应时间? – RobG

+0

@RobG:响应时间和内存使用情况 –

+0

对于响应时间,内联将领先,尤其是在每个div都有监听器的情况下。可能会使用更多的记忆,但差异不会显着。 – RobG

回答

2

.delegate()据说比.live()快,它可能是你的选择。你可以阅读更多here

2

.live()示例将比onclick版本更快并且使用的内存更少。

每次你做onclick="fnName(this);"你正在创建一个新的函数,并且数千个相同的函数有一个非零的内存占用。如果您使用onclick,则还需要一点时间才能创建每个div。

.live()和.delegate之间的区别可能很小,但是您应该尽可能使用.delegate()。

+0

关于.delegate(和.bind)的子问题:如果DOM节点被删除并重新创建,附加的事件会随着它消失吗? (我假设如此。).live()和onevent解决了这个问题。 –

+0

@evan - 你测试了你的说法吗?内联处理程序创建一个单一的函数,当相关事件到达元素时调用它们,而不是每次都创建它们。不同之处在于内存和加载时间可以忽略不计(如果可以测量的话)。无需jQuery或.live即可轻松完成事件委派,从而加快了加载速度(加载的代码少了100kb)。 – RobG

相关问题