你好我在一个带有wordpress的网站上使用jQuery UI手风琴,我收到错误:" Uncaught TypeError:$(...)。accordion不是一个函数"
在我的functions.php中,我加载了一个app.js,我用这个函数捆绑了jQuery UI文件和其他jQuery插件:wp_enqueue_script(' theme-js',get_template_directory_uri()。& #39; /js/app.js' ;, array(' jquery'),null,true);
要捆绑app.js文件,我使用webpack。
这就是我在webpack中的main.js中包含jQuery UI的方式:
var $ = window.jQuery;
var jqueryUi = require("./jquery-ui.min.js");
我已经在wordpress安装上禁用了所有插件,并删除了jQuery插件。
谢谢。
答案 0 :(得分:2)
1- Default Scripts Included and Registered by WordPress
2-你没有添加/调用/排队jQuery UI手风琴
wp_enqueue_script('jquery-ui-accordion');
您可能需要添加/调用/排队jQuery UI Core
wp_enqueue_script('jquery-ui-core');
这是因为.accordion()
是一个jQuery UI效果,而不仅仅是jQuery!
3-一定要用你的JS包裹;
jQuery( document ).ready( function( $ ) { PUT YOU JS HERE });
最后说明:你使用的是node.js吗?
如果没有,这是什么require
???
希望这有帮助,SYA
答案 1 :(得分:1)
在您的输出中,看起来它可能是一个加载订单问题。很难说,除非你提供你的非捆绑和捆绑输出。
无论如何,这正是WordPress入队系统的设计目标 - 依赖管理。我将单独排队jQuery UI并通过WP专门分配适当的依赖项。这有望避免这样的问题,并且还可以防止包含JS文件的双重问题。如果您正在捆绑jQuery UI并且有一天会使用依赖于它的插件,WP可能会将其排队,并且您将在您的站点上加载两个版本。性能不佳,维持头痛。
如果您担心性能但在您的站点上使用HTTP / 2,则单独加载这些脚本应该不再像过去那样令人担心,因为您可以加载通过一个TCP连接并且它是多路复用的。
https://http2.github.io/faq/#what-are-the-key-differences-to-http1x
简而言之,我认为单独排队会有更多优势,而将它捆绑到你的JS中会更少。