jQuery 1.7“统一绑定/bind,live和delegate”

4

jQuery 1.7版本将“统一绑定(bind)/直接绑定(live)/委托绑定(delegate)”功能。这在jQuery源代码中意味着什么?对我的jQuery代码有什么影响?

1个回答

5

简要概述:

目前我们有三种不同的事件API对:bind/unbind、live/die和delegate/undelegate。由于它们都在幕后使用相同的事件列表和事件,分别公开API可能会导致错误的期望。引入jQuery.fn.on。Bind/Delegate/Live将保留为速记方法。


如果我正确理解了那份谷歌文档,$(selector).on(events, fn) 的语法与 $(selector).bind(events, fn) 相同,但会像 .live() 一样适用于现有对象或将来的对象(有点类似于 .bind().live() 的结合)。这样理解对吗? - jfriend00
No. $(selector).on(events, fn)的语法与$(selector).bind(events, fn)相同,但仅适用于当前对象。要在进一步的对象上工作,请使用$(document).on(events, selector, fn) - 请注意它是文档范围内的!如果您对纯JS有一点了解:.on()将事件处理程序附加到$(elems)上。 "选择器"过滤这些元素。.live()是一个文档范围内的事件侦听器(记住事件冒泡),检查对象是否匹配给定的选择器,并在如此的情况下执行相应的回调。 - Maximilian Hils
好的,我现在明白了。从架构上看,这更符合实际工作方式。你不认为大多数程序员会继续使用 $(selector).click(fn)$(selector).live("click", fn) 的快捷方式吗? - jfriend00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接