Uncaught TypeError:$(...)。accordion不是wordpress中的函数

问题描述:

你好我正在WordPress网站上使用jQuery UI手风琴,我得到错误:“Uncaught TypeError:$(...)。手风琴是不是一个函数“

在我的functions.php我加载了一个app.js,其中我用这个函数捆绑了jQuery UI文件和其他jQuery插件:wp_enqueue_script('theme-js',get_template_directory_uri() '/js/app.js',array('jquery'),null,true);

要捆绑app.js文件我使用webpack。

这是我包括jQuery UI的我main.js中的WebPack:

var $ = window.jQuery; 
var jqueryUi = require("./jquery-ui.min.js"); 

我已禁用我的WordPress安装的所有插件和删除的行吟诗人的jQuery插件。

谢谢。

1- Default Scripts Included and Registered by WordPress
2 - 您没有添加/电话/排队jQuery UI的手风琴
wp_enqueue_script('jquery-ui-accordion');
你也许需要添加/电话/排队jQuery UI的核心 wp_enqueue_script('jquery-ui-core');
这是因为.accordion()是jQuery的UI效果,而不仅仅是jQuery!
3-一定要包装你的JS;
jQuery(document).ready(function($) { PUT YOU JS HERE });
最后说明:你在使用node.js吗?
如果不是,这是什么require ???
希望这可以帮助,SYA

+0

谢谢!那帮了我很多 – dezimar

+0

@dezimar你很受欢迎! – LebCit

在您的输出中,它看起来可能是加载顺序问题。很难说,除非你提供非绑定和捆绑输出。

无论如何,这正是WordPress排队系统所设计的 - 依赖管理。我会分开排队jQuery UI,并通过WP专门分配适当的依赖关系。这将有望避免这样的问题,并且还可以避免包含JS文件在内的任何问题。如果你捆绑了jQuery UI,并且有一天会使用依赖它的插件,那么WP可能会将它加入队列,并且你的网站上会加载两个版本。性能不佳,并且很难维持。

如果您担心性能,但在您的站点上使用HTTP/2,单独加载这些脚本应该不再像过去那样担心了,因为您可以加载一个TCP连接,并且它是复用。

https://http2.github.io/faq/#what-are-the-key-differences-to-http1x

总之,我看到更多的优势分别排队,并与它捆绑到您的JS少。

+0

谢谢!那帮了我很多 – dezimar

+0

@dezimar你能详细说明你到底做了什么吗?您是否已将代码添加到JavaScript代码以加载手风琴插件? –