类型错误:$(...).tooltip不是一个函数。

6

我遇到了一个问题

类型错误:$(...) .tooltip不是函数

这个问题出现在我使用Lightbox2和Bootstrap时,在jquery文件中初始化tooltip()函数。

$(function() {
  $('[data-toggle="tooltip"]').tooltip({
      html: true
  });
});
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
        <script src="bootstrap/js/bootstrap.js"></script>
        <script src="main.js"></script>
</head>
<body>
  <script src="lightbox-plus-jquery.min.js"></script>
</body>


我也尝试了使用CDN @ganesh,但仍然无法摆脱这个错误。 - Gagandeep
是的,js文件正在加载@epascarello - Gagandeep
这是我在控制台看到的唯一错误。@TheFlash,除此之外其他都正常工作,但我通过从main.js文件中删除整个函数并将其添加到index.php下的脚本标记中找到了解决方案,因为我只需要在该页面上使用工具提示。 - Gagandeep
@Gagandeep,你的页面上不会有两个版本的jQuery吧? - epascarello
我在页面上没有两个版本,它是2.1.4 @epascarello :)。 - Gagandeep
显示剩余4条评论
2个回答

10
这个问题可能会在jQuery被重复引用时发生。
对于使用Rails的用户,jQuery已默认被引用(请查看app/assets/javascripts/application.js)。
//= require jquery

例如在app/views/layouts/application.html.erb中使用<script>标签再次包含jQuery将导致此错误。
解决方法是删除app/views/layouts/application.html.erb中的<script>标签。

@NeerajRana 是的,但这在开始使用任何框架时都很常见。该框架会加载jQuery,如果您正在集成来自另一个非框架项目的已经工作的代码,则也可能包括jQuery。在我的情况下,当将一些非Bootstrap页面转换为使用Bootstrap时发生了这种情况。 - Haydentech
我相信这种情况也会发生在使用PureChat等聊天插件时。它会加载自己的JQuery。我认为Bootstrap将.tooltip()添加到第一个(Rails)JQuery中。一旦第二个JQuery被加载,那么你就在$(document)turbolinks:load事件中使用第二个JQuery。第二个JQuery不知道.tooltip()。通过注释掉PureChat,问题就解决了。我将测试并验证在调用它之前该函数是否存在,如:if (typeof jqueryobject.tooltip === "function") - Chloe
哦,天啊!这是我第一次看到有人说这个,而这正是我的问题所在。唉,多么愚蠢简单的事情啊。谢谢!+1 - EFDesign

0

我最喜欢的jQuery UI部分是tooltip(),而且我经常忘记它在jQuery UI中并不是一直存在。它是在1.9版本中添加的...

版本添加:1.9(来源:API.jQueryUI.com:Tooltip Widget)。

如果您没有1.9或更高版本的jQuery UI,则会出现错误:tooltip()不是一个函数()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接