我最近 发现 jQuery的livequery插件可能非常浪费,因为它不使用事件委托但绑定所有可绑定事件并在每次更改时重新检查整个DOM
如果有人使用livequery和.live()获得有关最佳实践的更多信息或建议,我将非常感激
我最近 发现 jQuery的livequery插件可能非常浪费,因为它不使用事件委托但绑定所有可绑定事件并在每次更改时重新检查整个DOM
如果有人使用livequery和.live()获得有关最佳实践的更多信息或建议,我将非常感激
你真的需要一个像这样的插件是很少见的 livequery
。可能你真正需要它的唯一时间是你需要对你做的其他一些jQuery代码所做的DOM的更改做出反应 无法修改。
而 .live()
确实使用事件委托,它是在 document
级别,这意味着它需要处理 所有 页面上的事件,以查看它们是否与每种事件类型提供的选择器匹配。
两者的更好的选择(IMO)是 delegate()
(文档) 使用事件委托的方法就像 .live()
,但允许您将其约束到页面的特定部分。
$('#someContainer').delegate('a.someButton', 'click', function() {
// do something when an "a.someButton" inside "#someContainer" is clicked
});
请注意,事件委派方法响应浏览器事件,而不是对DOM的更改。如果您需要根据对已经创建的DOM的更改来运行某些代码,则需要运行该代码 当你做出改变时 到DOM。