【问题标题】:Is jquery .bind() deprecated?jquery .bind() 是否已弃用?
【发布时间】:2015-11-11 16:06:51
【问题描述】:

jquery bind() 是否已弃用或者可以安全使用?

我看到很多关于 bind() 的 cmets 在 cmets 中被弃用,并且在 SO 中的回答如下:Jquery Event : Detect changes to the html/text of a div

Is there a JavaScript/jQuery DOM change listener?

并且不知道使用它是否安全(不管它是好是坏)。

这里没有任何关于它被弃用的信息:https://api.jquery.com/bind/

【问题讨论】:

  • 来自您链接到的 API 文档:“从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。”跨度>
  • 意思是,不,它没有被弃用,它可以安全使用。只是不... “首选”
  • .bind 通常由向后兼容更旧版本的 jQuery 的插件使用,这就是它不会很快消失的原因。
  • 我认为在更高版本的 jQuery bind() 中无论如何都只是在后台使用 .on() 。因此,如果您使用最新版本,除了您调用它的语法之外,使用 bind 和 on 之间几乎没有区别
  • 从版本 3 开始绝对不推荐使用 - api.jquery.com/bind

标签: jquery bind


【解决方案1】:

我不认为它已被弃用,但 on 是附加事件的首选方法。

http://api.jquery.com/bind/

已弃用意味着他们将来会删除它,但他们的文档似乎没有这么说。

编辑:

从 jQuery 3.0 开始,bind 已弃用。上述链接仍然有效,但已更新。从他们的文档中:

从 jQuery 3.0 开始,.bind() 已被弃用。它被取代 用于将事件处理程序附加到文档的 .on() 方法 jQuery 1.7,所以它的使用已经不鼓励了。

【讨论】:

  • 你也可以通过 on 来监听 dom 的变化吗?
  • @Claudiu:您无法使用.on .bind 监听 DOM 更改。突变事件从来没有得到很好的支持,并且已经被mutation observers抛弃了。 MutationObserver 比以前的事件得到更好的支持。
  • DOM 变化是什么意思?你用 bind 做的任何事情都可以用 on 做,甚至更多。因为我相信 bind 不支持委托事件。换句话说,当调用绑定发生时,该元素必须存在。
  • 伙计,还有很多库仍然使用绑定
【解决方案2】:

不,不是,这就是.on.bind 之间的区别,基本上.bind 仅直接从元素即$("#elem").bind(...) 调用,因此该元素必须存在绑定函数被调用。并且.on 可以在文档 i 上“绑定”。 e. $(document).on("click",".class",funcion(){...});,所以如果你使用.append或其他方式动态添加元素,事件将有效。

【讨论】:

  • 您能稍微扩展一下这种差异吗?即使在阅读您的答案后,我也不太明白有什么区别。 (我认为没有区别,除了 .bind 的功能较少)
  • Bind 不支持委托事件。该元素必须存在于 DOM 中才能附加事件。即使您希望事件发生的元素尚不存在,您也可以将事件附加到父对象。
  • 不是这样,.on 要支持委托事件,$("") 部分还是要选择一个已有的元素,没有什么不同。
  • @KevinB:我认为 Marcus 的意思是:是的,虽然您查找的位必须存在,但 on 可用于捕获尚不存在的元素上的事件。像$(document).on("click", ".foo", ...) 一样捕捉class="foo" 尚不存在的元素上的事件。 (document 是最广泛的委托根。)
  • @AtheistP3ace:是的,.bind 没有提供直接的委派支持(当然,你可以自己做)。在 v1.7 之前,它是独立的:.bind 用于直接,.delegate 用于委托。 (还有.live 的恐怖。)
【解决方案3】:

.bind().delegate() 在 jQuery 1.12 和 2.2 中被弃用。这些功能在 1.12 或 2.2 中运行良好,没有警告消息,但在下一个版本和(当然)在 3.0 中将无法运行。

强烈建议使用.on() 而不是.bind().delegate()

http://blog.jquery.com/2016/01/08/jquery-2-2-and-1-12-released/ https://github.com/jquery/jquery/issues/2288

【讨论】:

    【解决方案4】:

    它在 jQuery 1.1 中没有被弃用。如果您检查.bind 事件的声明,您可以看到它只是调用.on

    bind: function( types, data, fn ) {
        return this.on( types, null, data, fn );
    },
    

    已弃用或可以安全使用?

    正如其他人所说,不,它没有被弃用并且是安全的,它现在只是有点多余,只是为了向后兼容而存在。

    虽然它似乎在later versions of jquery now 中被标记为已弃用

    【讨论】:

    • 这在 jQuery 的第 3 版中绝对不推荐使用。使用 jQuery 迁移。
    猜你喜欢
    • 2012-03-27
    • 2023-03-08
    • 2018-09-12
    • 2017-12-06
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2011-07-30
    相关资源
    最近更新 更多