在过去,我曾经live()非常成功地链接调用,例如:
$(".something")
.live("click", function(e) { ... })
.live("change", function(e) { ... })
.live("submit", function(e) { ... });
这些天来,live(),bind()并delegate()已被闪亮的新on().
我尝试简单地替换live()为on()看起来很明显的:
$(".something")
.on("click", function(e) { ... })
.on("change", function(e) { ... })
.on("submit", function(e) { ... });
但是,当您考虑如何工作时,这几乎同样明显地行不通on()。这来自http://api.jquery.com/on/:
“事件处理程序仅绑定到当前选定的元素;它们必须在您的代码调用 .on() 时存在于页面上。”
根据 jQuery 文档,我需要绑定document并委托.something来处理实时事件。.document不幸的是,这意味着如果我想复制上面的内容,我最终会重复我的委托选择器( ) on():
$(document)
.on("click", ".something", function(e) { ... })
.on("change", ".something", function(e) { ... })
.on("submit", ".something", function(e) { ... });
这可以按预期工作,但我真的很希望能够像使用live(). 我错过了什么吗?