内联javascript性能

内联javascript性能,javascript,performance,inline,Javascript,Performance,Inline,我知道更好的编码实践是避免内联javascript,如: <img id="the_image" onclick="do_this(true);return false;"/> 如果我绑定了大量的点击事件,我会失去任何性能吗?我并不担心最初绑定事件所需的时间,而是担心单击和事件发生之间的响应时间 我敢打赌,如果有差异,这是可以忽略的,但我将有一大堆函数绑定。我想知道浏览器是否将onclick属性视为绑定事件 感谢我的工作,这取决于你。我将所有事件移动到jquery。然后,我使用Fi

我知道更好的编码实践是避免内联javascript,如:

<img id="the_image" onclick="do_this(true);return false;"/>
如果我绑定了大量的点击事件,我会失去任何性能吗?我并不担心最初绑定事件所需的时间,而是担心单击和事件发生之间的响应时间

我敢打赌,如果有差异,这是可以忽略的,但我将有一大堆函数绑定。我想知道浏览器是否将onclick属性视为绑定事件


感谢我的工作,这取决于你。我将所有事件移动到jquery。然后,我使用FireBug分析了javascript,以查看什么花费了最长的时间。然后我优化了那些耗时最长的


如果只是一些,你不会注意到任何退化。如果是成百上千的,那么你可以。

不用担心,使用on事件

$("#the_image").on("click",function(){
     do_this(true);
     return false;
});

一个事件,多个项目没有性能影响

差别可以忽略不计。如果必须绑定到页面中的多个项目,可能会影响性能,您可能希望绑定到更高级别的对象,只需截取将单击绑定到包含DIV标记的目标项目(图像)。除此之外,它应该很好,具体取决于您的用例


查看javascript中的冒泡事件以了解更多细节。

“多个项目没有性能影响”肯定是错误的。您可能不会在几个元素上注意到它,但如果在数百或数千个元素上放置一个实时事件,您将看到性能上的成功。而且,我不明白为什么需要在单个元素上进行实时事件。(您的示例使用了CSS选择器的ID,这是唯一的。)我收回我以前的评论;显然,jQuery团队使用jQuery1.4优化了
live
算法,因此使用
live
带来的性能冲击实际上已经消失了+1@MikeRobinson也许值得更新您的答案,以明确这一点。live现在不受欢迎Hanks,现在我想知道性能受到影响是因为它是jquery,还是因为我这样做了,它同样会影响性能:_image.onclick=function(){do_this(true);};再次感谢!主要是事件监听器的数量,特别是在IE中,因为在IE中js引擎和rendering/DOM引擎是跨COM边界的。两者之间的区别是可以忽略的,但是使用.live会有所帮助,绑定到DOM中更高级别的内容也会有所帮助,这样您就可以在事件气泡中捕捉到它。
$("#the_image").on("click",function(){
     do_this(true);
     return false;
});