livequery表现

时间:2011-01-27 15:05:53

标签: jquery livequery

我最近discovered jQuery的livequery插件可能非常浪费,因为它不使用事件委托但绑定所有可绑定事件并在每次更改时重新检查整个DOM

如果有人有关于使用livequery和.live()的最佳实践的更多信息或建议,我将非常感激

1 个答案:

答案 0 :(得分:11)

您实际上需要一个像livequery这样的插件是很少见的。可能你真正需要它的唯一时间是你需要对你无法修改的其他jQuery代码所做的DOM的更改作出反应

虽然.live()确实使用了事件委派,但它在document级别执行,这意味着它需要处理页面上的所有事件以查看它们是否匹配每个事件类型提供的选择器。

这两种方法的更好选择(IMO)是delegate()(docs)方法,它使用与.live()类似的事件委派,但允许您将其约束到页面的特定部分。

$('#someContainer').delegate('a.someButton', 'click', function() {
    // do something when an "a.someButton" inside "#someContainer" is clicked
});

请注意,事件委派方法会响应浏览器事件,而不会更改DOM。如果您需要根据对所做DOM的更改来运行某些代码,则需要在对DOM进行更改时运行该代码