求助:Divi主题用短代码加轮播时出现Uncaught TypeError错误
解决Divi主题中Owl Carousel "$(...).owlCarousel is not a function" 错误
这个错误的核心原因是Owl Carousel的JavaScript资源未正确加载,或是加载顺序不符合要求,结合Divi主题的特性,以下是具体解决步骤:
1. 先修正代码语法错误
你提供的代码里存在一个低级语法问题:<script>>多写了一个>,需改为标准的<script>标签,否则会影响脚本执行。
2. 确保Owl Carousel资源正确引入
Divi主题默认不内置Owl Carousel,需要手动引入它的CSS和JS文件,推荐通过子主题的functions.php添加(避免主题更新丢失修改):
function enqueue_owl_carousel() { // 加载Owl Carousel核心样式 wp_enqueue_style( 'owl-carousel-css', '//cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css', array(), '2.3.4' ); // 加载Owl Carousel主题样式 wp_enqueue_style( 'owl-carousel-theme-css', '//cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css', array(), '2.3.4' ); // 加载Owl Carousel JS(依赖jQuery,确保加载顺序正确) wp_enqueue_script( 'owl-carousel-js', '//cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js', array( 'jquery' ), '2.3.4', true ); } add_action( 'wp_enqueue_scripts', 'enqueue_owl_carousel' );
array( 'jquery' )参数确保jQuery在Owl Carousel之前加载,避免依赖问题;true参数指定脚本在页脚加载,减少DOM未就绪的问题。
3. 调整自定义JS的写法与加载位置
Divi启用了jQuery的noConflict模式,直接用$可能导致未定义问题,同时要确保脚本在Owl Carousel之后加载:
- 推荐将自定义JS放在Divi后台「主题选项 > 集成 > 页脚」区域,或者子主题的独立JS文件中;
- 修正后的JS代码:
jQuery(document).ready(function($) { // 链式调用简化代码 $('.slider').addClass('owl-carousel').owlCarousel({ loop:true, margin:10, items:1, dots:true, nav:false, URLhashListener:true }); $('.slider2').addClass('owl-carousel').owlCarousel({ loop:true, margin:10, nav:true, items:1, dots:false, center: true, URLhashListener:true }); });
4. 排查冲突问题
- 暂时禁用其他插件,测试是否存在脚本冲突;
- 在浏览器控制台输入
jQuery.fn.jquery,查看当前jQuery版本,Owl Carousel 2需要jQuery 1.8及以上版本,确保版本兼容。
内容的提问来源于stack exchange,提问作者Sonali
相关产品推荐
相关产品推荐

