我最近发现 jQuery的livequery插件可能非常浪费,因为它不使用事件委托但绑定所有可绑定事件并在每次更改时重新检查整个DOM
如果有人使用livequery和.live()获得有关最佳实践的更多信息或建议,我将非常感激
use*_*716 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
});
Run Code Online (Sandbox Code Playgroud)
请注意,事件委派方法响应浏览器事件,而不是更改DOM.如果您需要根据对所做DOM的更改来运行某些代码,则需要在对DOM 进行更改时运行该代码.
| 归档时间: |
|
| 查看次数: |
4625 次 |
| 最近记录: |