livequery表现

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

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

您实际上需要一个像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 进行更改时运行该代码。