Jquery 3.0 url。indexOf错误

我得到以下错误从jQuery一旦它已更新到v3.0.0

jquery.js:9612 Uncaught TypeError: url.indexOf is not a function

知道为什么吗?

167700 次浏览

Jquery 3.0有一些突破性的变化,删除某些方法由于冲突。您的错误很可能是由于这些更改之一,例如删除了.load()事件。

jQuery Core 3.0升级指南中阅读更多

要解决这个问题,你要么需要重写代码以与Jquery 3.0兼容,要么你可以使用JQuery迁移插件来恢复已弃用和/或已删除的api和行为。

更新所有调用load函数的代码,比如:

$(window).load(function() { ... });

$(window).on('load', function() { ... });

jquery.js:9612 Uncaught TypeError: url。indexOf不是一个函数

此错误信息来自jQuery.fn.load函数。

我在申请时也遇到了同样的问题。经过一番挖掘,我在jQuery的博客中找到了这个语句,

< p >。不再是. load, .unload和.error,自jQuery 1.8以来已弃用。 使用.on()注册监听器

我只是简单地改变我的jQuery对象调用load函数如上所示。一切都按照预期进行。

在更新到最新版本的JQuery后,我遇到了同样的错误。因此,我更新了我正在处理的jquery文件,如前所述,所以它说.on("load")而不是.load()

这个修复不是很稳定,有时对我不起作用。因此,要解决这个问题,你应该更新你的代码从:

    .load();

    .trigger("load");

我从以下来源得到了这个修复:https://github.com/stevenwanderski/bxslider-4/pull/1024

更好的方法可能是像这样的填充

jQuery.fn.load = function(callback){ $(window).on("load", callback) };

有了这个,你可以保持遗留代码不变。 如果你使用webpack,一定要使用脚本加载器。< / p >

@choz的答案是正确的。如果你有很多用法,想要确保它在任何地方都能正常工作而不做任何更改,你可以添加这些小的迁移片段:

/* Migration jQuery from 1.8 to 3.x */
jQuery.fn.load = function (callback) {
var el = $(this);


el.on('load', callback);


return el;
};

在这种情况下,你在其他节点上没有错误,例如在$image上,就像@Korsmakolnikov回答!

const $image = $('img.image').load(function() {
$(this).doSomething();
});


$image.doSomethingElseWithTheImage();