【问题标题】:jquery: Uncaught TypeError: $(...).error is not a functionjquery: Uncaught TypeError: $(...).error is not a function
【发布时间】:2017-08-01 00:00:08
【问题描述】:

我在我的页面上使用 jquery,其他部分没有问题。甚至 $.post 和 $.get 都可以正常工作。

现在我正在尝试评估图像是否有任何问题并尝试了以下代码:

$("#bib").error(function(){
   //nothing now 
});

我想知道为什么会出现此错误:

Uncaught TypeError: $(...).error is not a function
at app.js:53
(anonymous) @ app.js:53

如您所见,我已经缩短了代码以隔离问题,但您明白了整个想法。目前这些 jquery 源都包含在页面内:

https://code.jquery.com/jquery-3.1.0.min.js https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js

知道为什么会这样吗?

【问题讨论】:

  • 看起来它在 3.0 中被删除了。在 2.4 中可以正常工作,然后在 3.0 中不行(使用 jsfiddle)。尝试.on 版本,详见此处:api.jquery.com/error
  • .error(): "从 jQuery 1.8 开始,不推荐使用 .error() 方法。使用 .on( "error", handler ) 将事件处理程序附加到错误事件。 "
  • @Andreas 已弃用并不意味着已删除。你能找到他们删除它的地方吗? API 页面上没有说明。
  • @Andreas nvm,在这里找到它:jquery.com/upgrade-guide/3.0/…
  • @freedomn-m 它已被弃用,所以我不会再使用它了,不管它是否被实际删除 :)

标签: jquery


【解决方案1】:

来自 jquery 升级指南:https://jquery.com/upgrade-guide/3.0/#breaking-change-load-unload-and-error-removed

重大更改:.load()、.unload() 和 .error() 已删除

这些方法是事件操作的快捷方式,但有一些 API 限制。事件 .load() 方法与 ajax .load() 方法冲突。由于 DOM 方法的定义方式,.error() 方法不能与 window.onerror 一起使用。如果您需要通过这些名称附加事件,请使用 .on() 方法,例如将$("img").load(fn) 更改为$("img").on("load", fn)

【讨论】:

    【解决方案2】:

    改用这个(如前所述,.error 已被删除)。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script>
    
    $("#bib").on('error', function(){
       //nothing now 
    });
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2022-08-22
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多