我通过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();
有谁知道导致此错误的原因是什么?什么解决方案可能是什么?
答案 0 :(得分:612)
此错误可能是由jQuery 1.8之后的.load
,.unload
或.error
等jquery事件别名引起的。在代码中查找这些别名并将其替换为.on()
以注册侦听器。例如:
$(window).load(function(){...});
变为:
$(window).on('load', function(){ ...});
答案 1 :(得分:30)
此错误通常由不兼容的 jQuery版本引起。我在foundation 6
存储库中遇到了同样的错误。我的存储库使用jQuery 3
,但基础需要早期版本。然后我改变它,它工作。
如果您查看foundation 5 dependencies所需的jQuery版本,请说明"jquery": "~2.1.0"
。
您能否确认您正在加载正确版本的jQuery?
我希望这会有所帮助。
答案 2 :(得分:16)
我也遇到过这个问题。我使用jquery.poptrox.min.js
进行图像弹出和缩放,我收到一条错误消息:
“未捕获的TypeError:a.indexOf不是函数”错误。
这是因为3.3.1 / jquery.min.js不支持此功能,因此对此进行简单修复就是将其更改为旧版本2.1.0 / jquery.min.js。
这样我就可以为我修好了。
答案 3 :(得分:9)
可能的原因之一是加载jQuery TWICE ,例如:
<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>
因此,请检查您的源代码并删除重复的jQuery加载。
答案 4 :(得分:5)
请在下面添加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>
答案 5 :(得分:1)
我正在使用jQuery 3.3.1
,但收到相同的错误,在我的情况下,URL是Object
与字符串。
发生了什么事,我拿了URL = window.location
-返回了一个对象。一旦将其更改为window.location.href
-它就不会出现e.indexOf
错误。
答案 6 :(得分:0)
我通过使用Jquery
安装项目需要的正确版本npm
来解决了这个问题
答案 7 :(得分:0)
这似乎很有趣,但没有人考虑以下内容。
在任何情况下都不要降级您的 JQUERY 版本