这会使用jQuery慢页面显示时间吗?

时间:2010-12-07 14:32:03

标签: javascript jquery performance optimization event-handling

我在页面上有大约300多个操作链接,在document.onready事件触发后使用jQuery连接处理程序:

$('a.cmd').click (function() { ... do stuff ... });

onclick处理程序合并到HTML中是否更有效,而不是在创建DOM元素后让jQuery附加它们?

<a onclick="... do stuff ...">

2 个答案:

答案 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中)事件处理程序绑定。