打开新的基础项目时,"未捕获的TypeError:a.indexOf不是函数"错误

Fre*_*ieE 221 javascript css jquery google-chrome zurb-foundation

我通过bash创建了一个新的Foundation 5项目foundation new my-project.当我在Chrome中打开index.html文件时,Uncaught TypeError: a.indexOf is not a function控制台中会显示错误,原因在于jquery.min.js:4.

我按照基础网站上的步骤创建了项目,但我似乎无法摆脱这个错误.基础和jQuery看起来像是在index.html文件中包含并正确链接,链接的app.js文件包括在内$(document).foundation();

有谁知道导致此错误的原因是什么?什么解决方案可能是什么?

控制台错误消息截图

小智 718

此错误可能是由jquery事件别名引起的.load(),.unload()或者.error()自jQuery 1.8以来已弃用.在代码中查找这些别名,并将其替换.on()为注册侦听器.例:

.load()

变为:

.unload()

  • $(函数(){...}); 也有效 (4认同)
  • 我没有在2.2.1 @User中使用它,但是一旦切换到3.3.1,我就必须进行此更改。 (3认同)
  • 这为我修好了。 (3认同)
  • @DanielLlano 你拯救了我的一天 (2认同)
  • 工作起来就像一个魅力。$(窗口).on('加载', 函数(){ (2认同)

sha*_*une 34

此错误通常是由不兼容的 jQuery版本引起的.我在foundation 6存储库中遇到了同样的错误.我的存储库正在使用jQuery 3,但基础需要早期版本.然后我改变它,它工作.

如果你看一下它所声明的基础5依赖项所需的jQuery版本"jquery": "~2.1.0".

你能否确认你正在加载正确版本的jQuery?

我希望这有帮助.


Har*_*ant 16

我也遇到过这个问题.我正在使用jquery.poptrox.min.js图像弹出和缩放,我收到一个错误,上面写着:

"未捕获的TypeError:a.indexOf不是函数"错误.

这是因为3.3.1/jquery.min.js不支持这一点,所以对此的一个简单修复是将其更改为旧版本2.1.0/jquery.min.js.

这样我就可以为我修复它.

  • 永远不要退回到版本,因为这可能会导致严重的安全问题。 (7认同)
  • 我移动到 3.2.1 到 2.1.0 并且它起作用了。这对我有用。 (2认同)
  • 如果是这种情况:您可以替换以下代码 $(window).load(function(){...}); 具有以下内容: $(window).on('load', function(){ ...}); 那也行!:) (2认同)

Gov*_*han 13

请在下面添加jQuery Migrate插件

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 我确认这已经解决了问题。 (3认同)
  • 这怎么可能行得通?安装 jQuery migrate 是为了代码迁移,安装 jQuery 特定版本可以解决版本问题。这些都不能长期解决这个问题。 (2认同)

T.T*_*dua 10

其中一个可能的原因是当你加载jQuery TWICE时,如:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>
Run Code Online (Sandbox Code Playgroud)

因此,请检查您的源代码并删除重复的jQuery加载.

  • 它发生在 wordpress 上,加载它自己的版本,如果你也在你身边加载一个 jquery 版本。 (3认同)