.owlCarousel()不是函数

时间:2018-03-07 15:04:44

标签: javascript jquery owl-carousel

我已经意识到这个主题已经有数百个问题,但在仔细审查了几十个问题后,他们都包含了错误顺序的脚本标签。我的是正确的。

As per the documentation

<link rel="stylesheet" href="/vendor/owl.carousel.min.css">
<link rel="stylesheet" href="/stylesheets/styles.css">
...
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script>
<script type="text/javascript" src="/javascripts/scripts.min.js"></script>
...
<div class="homepage-slider">
  ...
</div>

在scripts.min.js中我有我的init:

$(function() {
  $(".homepage-slider").owlCarousel();
});

此命令抛出:

  

r(...)。owlCarousel不是函数

一切似乎都是正确的顺序。是否存在某种破坏它的jQuery怪癖?我试过了:

$.noConflict();
$(function() {
  $(".homepage-slider").owlCarousel();
});

但它没有解决问题。

额外详细信息:

我将我的JS捆绑到一个缩小的文件中。我是这样做的:

...
import {homepageCarousel} from './modules/homepage-carousel';
...

有8个import语句(它们都是jQuery代码的片段)。轮播导入从顶部开始排名第二。

2 个答案:

答案 0 :(得分:0)

如果您将scripts.min.js包含在页面的头部,那么DOM元素很可能尚未存在。

将您的<script type="text/javascript" src="/javascripts/scripts.min.js"></script>向下移至结束</body>标记之前,您可能会对其进行操作。

这样,DOM元素已经存在,因此owlCarousel将能够找到该元素并做其事。

答案 1 :(得分:0)

确定:

我将jquery直接捆绑到NPM包中的scripts.min.js文件中。

在每次进口中,我都有:

var $ = require('jquery');

我删除了该行,并直接包含了CDN中的jQuery:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

它解决了我的问题。