什么是中$(SEL).bind(“点击”,$(SEL)。单击显著差异($(SEL).live(“点击

2019-06-02 16:57发布

我一直在使用他们很长一段时间,但大部分时间里,我更喜欢较短的一个,不过,我只是想真正深入到细枝末节。 我会一直在创造马车代码,我不想作出贡献,并在网上传播懒洋洋地-DONE码出。

所以告诉我:

什么是它们之间的显著优势/劣势,还是只是像冰淇淋,口味不同,但相同的“感觉良好”的效果?

鼓励每个人抛出关于此事的专家意见。

提前谢谢了。

Answer 1:

bind()在1.0的溶液中加入, live()在1.3, delegate()中1.4.2和on()在1.7。

由于1.7 on()是优选的用途和live()已被弃用,不建议在所有。 如果你正在使用1.3使用bind() ,而不是live()和1.4.2使用delegate()而不是live()和1.7使用on()而不是任何其他人。

关于$("selector").click 。 摘自click() 文档

在头两个变型中,该方法是用于.bind快捷方式(“点击”,处理程序),以及用于。对(“点击”,处理程序),为的jQuery 1.7。 在第三个变化,当。点击()被调用时不带参数,它是.trigger快捷方式(“点击”)。

为什么要使用上(),而不是别人?
on()是最新加入,在1.7版本加入jQuery库。 on()有几个方法签名,使其能够提供同样的结果以前的版本做的,但改善和优化。 从引用文档

在jQuery 1.7中,。对()方法提供用于附接的事件处理程序所需的所有功能。

有bascialy没有必要使用bind()delegate()了。 相信它会工作,应该在使用这些方法没有坏处,但我总是假设最新增加的优化和改进以往任何版本的缺点的(除非文档另有说明,因为它是在案件live()
在此基础上,我会建议使用on()来代替。

之所以live()不推荐全站更多的是与它的缺点。 从引用live() 文档

不再推荐.live()方法的使用,因为jQuery的更高版本提供没有它的缺点更好的方法。 具体而言,以下问题出现在使用.live()的:

  • jQuery的尝试调用.live()方法,这可能是耗时的大型文档之前检索由选择器指定的元素。
  • 链接方法不被支持。 例如,$( “A”)找到( “异地,.external。”)生活(...)。 是无效的,并没有按预期工作。
  • 由于所有.live()事件在文档元素连接,事件需要他们处理之前的最长和最慢的可能路径。
  • 在移动的iOS(iPhone,iPad和iPod Touch)的Click事件不会泡到文档正文的大部分元素,不能用.live()不采用以下解决方法之一,可以使用:
    1. 使用本身可点击元素诸如或按钮,这两个做泡沫文档。
    2. 使用。对()或.delegate()附连到下面document.body的水平的元件,由于移动的iOS确实在体内气泡。
    3. 应用CSS样式光标:指针需要气泡点击(或包括document.documentElement中父母)的元素。 但是请注意,这将在元件上禁止复制\粘贴并导致触摸时它被突出显示。
  • 在事件处理程序调用event.stopPropagation()处于停止的事件处理程序安装文件中下无效; 该事件已经传播到文档中。
  • 该.live()方法与其他事件方法的方式,可奇怪的,例如,$(文件).unbind(“点击”)删除任何呼叫连接到.live所有点击处理程序()进行交互!

还有就是文档中有很多更多的好东西,但。

其他资源
点击()
绑定()
生活()(不使用)
代表()
上()



Answer 2:

在功能方面在特定情况下,没有什么区别。 然而, .on优于.bind在jQuery 1.7,并作为.click -它只是一个普通的事件处理程序的简写。



文章来源: What are the significant differences among $(sel).bind(“click”, $(sel).click(, $(sel).live(“click”, $(sel).on(“click”?