TypeError: $(...).owlCarousel 不是函数

Posted

技术标签:

【中文标题】TypeError: $(...).owlCarousel 不是函数【英文标题】:TypeError: $(...).owlCarousel is not a function 【发布时间】:2014-03-06 20:16:37 【问题描述】:

我无法将此轮播添加到我的 prestashop 模板中。

它返回以下错误:

导航:是的

用于初始化它的代码就是这个

$(document).ready(function() 
  $("#owl-demo").owlCarousel(
    navigation : true
  );
);

我正在尝试解决它,但似乎不可能,因为在一个空的 html 页面上它可以工作,但当我在 Prestashop 上使用它时却不行。

有什么线索吗?

谢谢。

【问题讨论】:

【参考方案1】:

在您的主页中添加owl.carousel.min.js文件,在您正在使用的文件之前添加以下代码:

$("#owl-demo").owlCarousel(
    navigation : true
  );

只有这样才行。

【讨论】:

【参考方案2】:

如果在 owl carousel 文件之后加载 jquery 文件,则会出现此错误。

(确保您对 jquery 的引用位于 owl carousel 引用 js 文件上方)

【讨论】:

感谢您开始回答。尝试提供有关他们可能在哪里寻找问题以及如何解决问题的见解。【参考方案3】:

如果 javascript 文件加载受到一些延迟的影响,您可以在调用之前检查函数是否已定义。

联系jQuery.isFunction

if($.isFunction('owlCarousel'))
  $("#owl-demo").owlCarousel(
    navigation : true
  );

联系JavaScript typeof operator

if(typeof owlCarousel === 'function')  
  $("#owl-demo").owlCarousel(
    navigation : true
  );

【讨论】:

【参考方案4】:

有时 html 在外部脚本完美加载之前执行内联脚本的原因。 我通过这种方式得到解决方案。 我刚刚将 defer 属性添加到我的 owl.carouselsource 调用中,例如 ..

<script defer src="plugins/OwlCarousel2.3/owl.carousel.min.js"></script>

关于 defer 属性的文档 --> att_script_defer-link

【讨论】:

【参考方案5】:

尝试使用 literal /literal 标签。通常建议将 javascript 放在 .tpl 文件 (smarty) 中的这些标签内。 Javascript 可能在没有标签的情况下工作,但有时会返回错误(就像你的情况一样)

BR的

【讨论】:

我也试过这个,但一直没有工作。它只是让我返回同样的错误。 如何将 js 拉入文件中?您是否在 .php (无论核心/模块文件显示您的 .tpl 文件)文件中使用 pretsatshop 确定的路径?示例在这里: $this->context->controller->addJS(($this->_path).'views/js/YOUR.js'); 我只是在 header.tpl 上的 你打算在每一页上都使用那个脚本吗?即使那样,您仍然应该像这样添加它(例如,如果您在模块中使用它)在您的情况下,prestashop 将每次加载脚本,即使它没有被使用。 我只想在主页中使用它(否则,感谢您警告我它会显示在每个页面上)。所以我必须在 prestashop .php 路径上添加脚本并添加脚本?那么函数的开始呢?在php文件上也?或者我必须使用该函数制作另一个 JS 文件?【参考方案6】:

我通过检查选择器是否存在来解决问题。由于这是我网站上的问题,我在页脚中为单个页面添加了代码,但它抛出了错误或其他不存在该选择器的页面。

$(document).ready(function() 
    var owl = $('.servicesCarosal');
            
    //console.log(owl);

    if (owl.length)  
        owl.owlCarousel(

        );
     
);

【讨论】:

【参考方案7】:

我遇到了同样的问题。只需在函数上方添加 js 文件即可

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<!--DO NOT ENTER ANY EXTERNAL LINK IN BETWEEN-->
<script type="text/javascript">
$(document).ready(function() 
    $('.owl-carousel').owlCarousel(
        loop: true,
    );
);
</script>

【讨论】:

为什么会有帮助?【参考方案8】:

对我来说,将 itemclass 添加到 carousel-item

-结果如下-

&lt;div class="item carousel-item" style="margin: auto;"&gt;

问题已解决。

【讨论】:

【参考方案9】:

首先,添加Owl Carousel CssOwl Carousel Theme Default Css 文件。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.css" integrity="sha512-UTNP5BXLIptsaj5WdKFrkFov94lDx+eBvbKyoe1YAfjeRPC+gT5kyZ10kOHCfNZqEui1sxmqvodNUx3KbuYI/A==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.css" integrity="sha512-OTcub78R3msOCtY3Tc6FzeDJ8N9qvQn1Ph49ou13xgA9VsH9+LRxoFU6EqLhW4+PKRfU+/HReXmSZXHEkpYoOA==" crossorigin="anonymous" referrerpolicy="no-referrer" />

然后添加JqueryOwl Carousel Js文件。

确保将Jquery 放在Owl Carousel Js 之前。

像这样:

<!-- put jquery before owl carousel -->
<!-- jquery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>

<!-- owl carousel -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js" integrity="sha512-bPs7Ae6pVvhOSiIcyUClR7/q2OAsRiovw4vAkX+zJbw3ShAeeqezq50RIIcIURq7Oa20rW2n2q+fyXBNcU9lrw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

【讨论】:

【参考方案10】:

在我使用 Webpack 捆绑资产的情况下,我需要在 GitHub 上的 owl 页面上关注 this section。

该部分指出您应该像这样添加 JQuery:

webpack.config.js

const webpack = require('webpack');

//...
plugins: [
    new webpack.ProvidePlugin(
      $: 'jquery',
      jQuery: 'jquery',
      'window.jQuery': 'jquery'
    ),
],
//...

index.js

import 'owl.carousel/dist/assets/owl.carousel.css';
import 'owl.carousel';

【讨论】:

【参考方案11】:

在首页添加jquery.min.jsowl.carousel.min.js文件,并添加如下代码:

$(document).ready(function() 
  var owl = $("#owl-demo");
  if(owl.length)
    $("#owl-demo").owlCarousel(
      navigation : true
    );
  
);

【讨论】:

【参考方案12】:

将您的 Jquery 文件和 owl.js 文件添加到标题部分

【讨论】:

以上是关于TypeError: $(...).owlCarousel 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

Django TypeError - TypeError: issubclass() arg 1 必须是一个类

pyspark:TypeError:'float'对象不可迭代

Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's

TypeError: key 必须是一个字符串,一个缓冲区或一个对象在 typeError 与 GCP 文件存在

TypeError: jQueryxxxxxx 不是函数