Javascript jQuery.live()或内联OneEvent属性哪个性能更好?

Javascript jQuery.live()或内联OneEvent属性哪个性能更好?,javascript,jquery,iphone,events,webkit,Javascript,Jquery,Iphone,Events,Webkit,我正在构建一个带有大量事件绑定的HTML5移动应用程序。由于它还有一个经常由于数据绑定而改变的大型DOM,直接绑定事件(jQuery.bind或addEventListener)可能不是一个好的选择。以下两者之间的权衡是什么: // jQuery.bind $("div").live("click", fnName); // Inline <div onclick="fnName(this);"></div> //jQuery.bind $(“div”).live(“

我正在构建一个带有大量事件绑定的HTML5移动应用程序。由于它还有一个经常由于数据绑定而改变的大型DOM,直接绑定事件(jQuery.bindaddEventListener)可能不是一个好的选择。以下两者之间的权衡是什么:

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

// Inline
<div onclick="fnName(this);"></div>
//jQuery.bind
$(“div”).live(“单击”,fnName);
//内联
虽然我最感兴趣的是移动WebKit的特定环境,但我也很想了解其他浏览器的运行情况。

.delegate()
据说比
.live()
更快,这可能是您的一个选择。您可以阅读更多。

.delegate()
据说比
.live()
更快,这可能是您的一个选择。您可以阅读更多内容。

与onclick版本相比,.live()示例速度更快,占用的内存更少

每次执行
onclick=“fnName(this);”
都是在创建一个新函数,数千个相同的函数都具有非零内存占用。如果使用
onclick
,则创建每个div也会花费更多的时间

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

与onclick版本相比,.live()示例速度更快,占用的内存更少

每次执行
onclick=“fnName(this);”
都是在创建一个新函数,数千个相同的函数都具有非零内存占用。如果使用
onclick
,则创建每个div也会花费更多的时间


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

关于.delegate(以及.bind)的子问题:如果删除并重新创建DOM节点,附加的事件会随之消失吗?(我想是的。).live()和OneEvent都回避了这个问题。@evan-你测试过你的声明了吗?内联处理程序创建一个函数,当相关事件到达元素时调用该函数,而不是每次都创建该函数。区别在于内存和加载时间是可忽略的(如果您可以测量的话)。不用jQuery或.live就可以轻松完成事件委派,从而加快加载速度(要加载的代码减少100kb)。关于.delegate(以及.bind)的子问题:如果删除并重新创建DOM节点,附加的事件会随之消失吗?(我想是的。).live()和OneEvent都回避了这个问题。@evan-你测试过你的声明了吗?内联处理程序创建一个函数,当相关事件到达元素时调用该函数,而不是每次都创建该函数。区别在于内存和加载时间是可忽略的(如果您可以测量的话)。没有jQuery或.live,事件委派可以很容易地完成,从而加快加载速度(要加载的代码减少100kb)。您打算如何衡量性能,例如页面加载或响应时间?@RobG:response time and memory usage对于响应时间,inline将遥遥领先,特别是在每个div上都有侦听器的情况下。可能会使用更多的内存,但是差异是微不足道的。您打算如何衡量性能,例如页面负载或响应时间?@RobG:response time and memory usage对于响应时间,inline将遥遥领先,特别是在每个div上都有侦听器的情况下。可能会使用更多的内存,但差异将是微不足道的。