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

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

它返回以下错误:

TypeError: $(...).owlCarousel 不是函数 导航:是的

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

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

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

有什么线索吗?

谢谢。

【问题讨论】:

    标签: jquery function 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 文件添加到标题部分

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-06-29
                      • 2020-06-17
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-03-03
                      • 1970-01-01
                      相关资源
                      最近更新 更多