Javascript 没有在Wordpress中定义jQuery,但我的脚本已正确排队
我正在尝试将一个单独的javascript文件mobile-menu.js加载到我的Wordpress主题中。当我查看控制台时,它会说,“jQuery没有定义。”但是,我知道我正确地将脚本文件排队。有什么想法吗 HTML文件:Javascript 没有在Wordpress中定义jQuery,但我的脚本已正确排队,javascript,php,jquery,wordpress,slidetoggle,Javascript,Php,Jquery,Wordpress,Slidetoggle,我正在尝试将一个单独的javascript文件mobile-menu.js加载到我的Wordpress主题中。当我查看控制台时,它会说,“jQuery没有定义。”但是,我知道我正确地将脚本文件排队。有什么想法吗 HTML文件: <a href="#" id="menu-icon"></a> <!--this line wasn't here originally--> <div id="switchmenu"><!--switchme
<a href="#" id="menu-icon"></a> <!--this line wasn't here originally-->
<div id="switchmenu"><!--switchmenu begin-->
<?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
</div><!--switchmenu end-->
mobile-menu.js文件:
jQuery(document).ready(function($) {
$('#menu-icon').click(function() {
$('#switchmenu').slideToggle("fast");
});
});
首先确保jquery文件包含在头文件中,并且您的文件需要jquery
wp_enqueue_script(
'lapetitefrog-mobile-menu',
get_template_directory_uri() . '/js/mobile-menu.js',
array('jquery'),
'1.0',
true
);
其次,您应该启动javascript文件,如下所示:
(function($) {
$(document).ready(function() {
.......
});
})(jQuery);
或
默认情况下,Wordpress附带jQuery
// Adds jQuery
add_action('init', 'childoftwentyeleven_down');
function childoftwentyeleven_down() {
// register your script location, dependencies and version
wp_register_script('down',
get_stylesheet_directory_uri() . '/js/down.js',
array('jquery') );
// enqueue the script
wp_enqueue_script('down');
}
添加
wp_enqueue_脚本('jquery')代码>在将脚本排队之前。您可以尝试:
首先让Jquery排队
wp_enqueue_script('jquery');
然后在第三个参数中用JQuery依赖项将后一个脚本排队,即array('JQuery')
,这是大多数人忘记的
wp_enqueue_script( 'lapetitefrog-mobile-menu', get_template_directory_uri() . '/js/mobile-menu.js', array('jquery'), '1.0', true );
jQuery未定义错误jQuery也可能与嵌入在模板部件中的jQuery代码一起出现
当jQuery被添加到页面的页脚,而嵌入的脚本试图在页面的中间执行时,就会发生这种情况
如果是这种情况,则需要使用wp\u enqueue\u script()
在头中加载jQuery。
因此,最后一个参数需要为false,此处:
wp_enqueue_script( 'my-jquery', get_template_directory_uri() . '/js/jquery.js', array(), time(), false );
现在代码以正确的顺序执行,jQuery将被定义
另一个解决方案是将嵌入的脚本移动到Javascript文件中,该文件也将与wp\u enqueue\u script()
一起添加到页面的页脚。这取决于您。尝试以下操作:jQuery(document).ready(函数(){jQuery('#菜单图标')。单击(函数(){jQuery('#切换菜单')。slideToggle(“fast”);})代码>检查同一页面中是否包含两个jquery文件。在数组()中添加“jquery”似乎可以解决jquery未定义的问题。但是现在当我检查网络面板时,它甚至没有得到mobile-menu.js文件。可能有什么问题?@nicatoby检查页脚,您可以在wp\u enqueue\u script()中定义选项true
,
不,它不在那里。这很有效!非常感谢你!我发现这个问题非常奇怪,因为我以前从来没有在脚本中添加过这样的代码……您知道这次为什么需要这样做吗?谢谢嗯,这就是我如何理解它是如何在wordpress codex和支持论坛之后工作的,所以从一开始我就把它放在我的插件和主题中,从来没有质疑过它。还有一些其他的,例如wp_print_脚本(“编辑器”)代码>如果您希望使用wp_edit。。。。我只是在默认情况下添加它们,这取决于我使用的代码段的用途。抱歉,我无法详细说明。@GavinSimpson functions.php文件在哪里?在“wp内容/主题”中,对吗?如果是,我应该换哪一个?有2个functions.php,一个在普通文件夹中,另一个在-child文件夹中。请使用您正在使用的主题文件夹中的functions.php,因此如果您正在使用子主题,请在themes/mytheme-child中编辑该functions.php。此答案为我节省了数小时的工作时间。非常感谢。我正在创建自己的插件,加载自定义jquery时出现此错误,因为我认为jquery库没有加载到资源页中,而此解决方案对我没有帮助!实际上我需要在管理面板中加载jquery!你知道其他解决办法吗?
wp_enqueue_script( 'lapetitefrog-mobile-menu', get_template_directory_uri() . '/js/mobile-menu.js', array('jquery'), '1.0', true );
wp_enqueue_script( 'my-jquery', get_template_directory_uri() . '/js/jquery.js', array(), time(), false );