Ton*_*ony 2 javascript optimization performance jquery event-handling
我在页面上有大约300多个动作链接,在document.onready事件触发后我将连接处理程序(使用jQuery):
$('a.cmd').click (function() { ... do stuff ... });
Run Code Online (Sandbox Code Playgroud)
将onclick处理程序合并到HTML中是否更有效,而不是在创建DOM元素后让jQuery附加它们?
<a onclick="... do stuff ...">
Run Code Online (Sandbox Code Playgroud)
会减慢速度吗?是的结合需要一定的时间,不管它有多少需要一些时间.但是,有一些方法可以真正改善您的情况.
它实际上是更好地使用.live()或.delegate()在此处理程序,所以你的初始绑定成本显著少,像这样:
$('a.cmd').live('click', function() { /* do stuff */ });
Run Code Online (Sandbox Code Playgroud)
或更好:
$(document.body).delegate('a.cmd', 'click', function() { /* do stuff */ });
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我们将一个事件处理程序附加到(或在第二个示例的情况下),而不是将处理程序附加到每个DOM元素.这意味着页面的启动成本显着降低.document<body>