WordPress错误:$(...)。即使在JS文件入队后,carousel也不是一个函数

时间:2018-06-05 18:48:23

标签: javascript php jquery wordpress

对于我的生活,我无法理解为什么我一直收到这个错误。 JS脚本确实入队,console.log测试确实显示在浏览器中,如下所示。

  

未捕获的TypeError:$(...)。carousel不是函数

Screenshot of errors side by side

请参阅下面的JS和Functions.php代码。

Carousel JS代码:我把它放在语法检查器中,它说没问题。

var $ = jQuery; //This fixed the WordPress error “Uncaught TypeError: $ is not a function” 

$(document).ready(function() {

    console.log( "Testing blog-tab-carousel.js file. It is properly enqueued." );

    var clickEvent = false;
    $('#newsCarousel').carousel({
     interval: 4000
    }).on('click', '.list-group li', function() {
     clickEvent = true;
     $('.list-group li').removeClass('active');
     $(this).addClass('active');
    }).on('slid.bs.carousel', function(e) {
     if (!clickEvent) {
      var count = $('.list-group').children().length - 1;
      var current = $('.list-group li.active');
      current.removeClass('active').next().addClass('active');
      var id = parseInt(current.data('slide-to'));
      if (count == id) {
       $('.list-group li').first().addClass('active');
      }
     }
     clickEvent = false;
    });
   })

   $(window).load(function() {
    var boxheight = $('#newsCarousel .carousel-inner').innerHeight();
    var itemlength = $('#newsCarousel .item').length;
    var triggerheight = Math.round(boxheight / itemlength + 1);
    $('#newsCarousel .list-group-item').outerHeight(triggerheight);
   });

Functions.php 相关摘要

function enqueue_blog_custom_styles() {
    wp_enqueue_style( 'blog-tab-carousel', '/wp-content/themes/kiddieacademy/css/blog-tab-carousel.css', false ); 
}

add_action( 'wp_enqueue_scripts', 'enqueue_blog_custom_styles' );

function enqueue_blog_custom_script() {
    wp_enqueue_script( 'blog-tab-carousel', '/wp-content/themes/kiddieacademy/js/custom/blog-tab-carousel.js', false );
}

add_action( 'wp_enqueue_scripts', 'enqueue_blog_custom_script' );

注意:原始开发人员在functions.php中注销了jQuery。我注意到,当我发表评论时,博客轮播的console.log测试会显示在控制台中。如果我删除了注释,保留wp_deregister_script('jquery');那么console.log就不会出现了。

function enqueue_theme_scripts() {
    /* Remove the jquery script
     wp_deregister_script('jquery');  */
    require_js("mousewheel");
    require_js("fancybox");
}

2 个答案:

答案 0 :(得分:0)

我经常发现,重新定义$的一个网站的工作原理并不适用于其他地方。就个人而言,我使用它并且它大部分时间都有效:

jQuery(document).ready(function($) {
    var $ = jQuery; // probably not needed, but seems to help in a "belt & braces" kinda way!

答案 1 :(得分:0)

现在已经解决了。事实证明原始开发公司没有将Bootstrap和CSS脚本排入队列,因此轮播无效。我必须下载物理文件并将其放在多站点层次结构中的主题文件夹中。

谢谢大家的尝试!

您现在可以关闭它。