我在页面上有大约300多个操作链接,在document.onready
事件触发后使用jQuery连接处理程序:
$('a.cmd').click (function() { ... do stuff ... });
将onclick
处理程序合并到HTML中是否更有效,而不是在创建DOM元素后让jQuery附加它们?
<a onclick="... do stuff ...">
答案 0 :(得分:5)
会减慢速度吗?是绑定需要时间,无论它花多少时间一些时间。但是,有一些方法可以真正改善你的情况。
在这里使用.live()
或.delegate()
处理程序实际上更好,因此您的初始绑定成本显着更少,如下所示:
$('a.cmd').live('click', function() { /* do stuff */ });
或更好:
$(document.body).delegate('a.cmd', 'click', function() { /* do stuff */ });
在这两种情况下,不是将处理程序附加到每个DOM元素,而是将一个事件处理程序附加到document
(或{{1在第二个例子的情况下)。这意味着页面的启动成本显着降低。
答案 1 :(得分:2)
内联事件处理程序肯定不会更高效本身。这两种方法都会创建大量的侦听器。
执行此操作的有效方法是使用.live()
或.delegate()
。
$('a.cmd').live('click', function () { /* do stuff */ });
如果您已经在使用jQuery,那么几乎没有令人信服的理由使用内联(在HTML中)事件处理程序绑定。