只是有兴趣知道哪个 - Click(), Live() and On()
是目前用来捕获用户鼠标的首选方法?
我认为live()
已经出局,因为我相信扫描到大部分DOM。
三江源
答案 0 :(得分:4)
来自jquery docs:
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。这种方法提供了一种方法 将委派的事件处理程序附加到页面的document元素, 当内容是动态的时,它简化了事件处理程序的使用 添加到页面。请参阅直接与委派事件的讨论 在.on()方法中获取更多信息。
.on()方法将事件处理程序附加到当前选定的集合 jQuery对象中的元素。从jQuery 1.7开始,使用.on()方法 提供附加事件处理程序所需的所有功能。
For earlier versions, the .bind() method is used for attaching an event handler directly to elements.
TLDR:始终使用on()
,绝不使用live()
答案 1 :(得分:1)
live()
和.bind()
方法。 live()
也已删除,其他两个是两种不同类型的事件处理程序。
.click()
是标准事件处理程序
.click(function() {
//Applies to DOM already present
});
.on()
。这取代了传统的bind()
和delegate()
.on('click', function() {
//Delegates to each element is DOM as it manipulated or generated
});
答案 2 :(得分:1)
“开启”是首选方法,因为将来您可以轻松地将其更改为“mouseup”,“mousedown”等其他方法。
答案 3 :(得分:1)
但是jQuery 1.9不支持实时功能,而不是你应该使用“on”
答案 4 :(得分:1)
TL; DR:live
已被弃用,bind
和delegate
被取代,on
是绑定任意事件的首选方式,click
只是很好,但有点受限。
$(selector).live("click", ...)
自1.7以来被弃用,自1.9以来从jQuery中删除,不灵活(它总是绑定到document
),效率极低(它首先找到元素,然后丢弃选择并使用选择器代替),要求选择器存储在jquery对象中并且通常是坏的。
$(document).on("click", selector, ...)
是live
的字面替换,但它没有任何错误。这是jQuery的do-everything事件绑定功能。它可以绑定任何地方,或委托任何事物:$parent.on(events, [targetSelector,] handler)
。您甚至可以一次绑定多个事件:.on("keypress paste change", ...)
bind
和delegate
是on
的较老堂兄弟。前者不能委托,后者必须委托。他们在论证顺序上也有所不同 - on
就是为了解决这个问题。它们已被on
取代,但它们尚未被弃用(截至jQuery 1.10)。如果你必须使用旧版本的jQuery(1.7之前版本),那么它们就是。否则,请坚持on
。他们当前的实现只是重定向到on
。
click
,mouseOver
,change
和many other充当on
和trigger
的双重别名。从字面上看 - 它们除了分支其中之一外别无其他。它们中的大多数从一开始就存在,它们很方便。但是,它们不能委托,并且没有相应的解除绑定方法。如果您使用off
,最好用on
补充它。一个不错的属性是他们承担了跨浏览器兼容性的承诺。或者至少是一个记录任何缺乏跨浏览器支持的地方(即:load
用于图像)。我个人的偏好是即使在on
就足够的情况下也会使用click
。