有很多答案,每个都涉及几点 - 希望这可以给你答案,并很好地解释什么是什么以及如何使用它。
Usingclick()
是bind('click' ...)
. Usingbind()
在设置事件侦听器时使用 DOM,并将函数绑定到 DOM 中的每个匹配元素。也就是说,如果您使用$('a').click(...)
,您会将提供的函数绑定到该代码运行时找到的 DOM 中每个锚标记的 click 事件。
使用live()
是 jQuery 中的旧方法;它被用来绑定事件bind()
,但它不仅仅在代码运行时将它们绑定到 DOM 中的元素 - 它还监听 DOM 中的更改并将事件绑定到任何未来匹配的元素。如果您正在执行 DOM 操作并且您需要在某些元素上存在一个事件,这些事件可能会在以后被删除/更新/添加到 DOM 但在第一次加载 DOM 时不存在,这很有用。
现在贬值的原因live()
是因为执行不力。为了使用live()
,您最初必须能够在 DOM 中选择至少一个元素(我相信)。它还导致运行的函数副本绑定到每个元素 - 如果您有 1000 个元素,那就是很多复制的函数。
The creation of the on()
function was to overcome those problems. It lets you bind a single event listener to an object that will not change in the DOM (so you can't use on()
on an element that will be removed/added to the DOM later - bind it to a parent object), and simply apply an element "filter" so that the function is only run when it is bubbled up to an element that matches the selector. This means you have just one function that exists (not a bunch of copies) bound to a single element - a much better approach to adding "live" events in the DOM.
... and that is what the differences are, and why each function exists and why live()
is depreciated.