在过去,我曾经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()
. 我错过了什么吗?