我认为通常您不会在实际元素上使用 .live ,而是在将来要填充元素的包含块上使用。
这就是代表所做的。然而,现场活动非常相似——它们只是将文档本身用作“包含块”。这具有 jQuery 必须检查页面上发生的给定类型的所有事件的缺点。因此,如果可能,您应该始终使用委托(通常是可能的!)
然而,从 jQuery 1.7 开始,各种事件注册方法被统一到.on()
其中,根据参数注册常规事件和委托。对于现场活动,您只需在其上创建一个委托document
。
下面是一些关于注册 live/delegate 事件的旧/新方法的示例(我将省略常规方法,因为它们与 with.bind()
但具有新函数名称.on()
):
// live events
$('.foo').live('click', function(e) {}); // old
$(document).on('click', '.foo', function(e) {}); // new
// delegates
$('#container').delegate('.foo', 'click', function(e) {}); // old
$('#container').on('click', '.foo', function(e) {}); // new