Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有在Wordpress中定义jQuery,但我的脚本已正确排队_Javascript_Php_Jquery_Wordpress_Slidetoggle - Fatal编程技术网

Javascript 没有在Wordpress中定义jQuery,但我的脚本已正确排队

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

我正在尝试将一个单独的javascript文件mobile-menu.js加载到我的Wordpress主题中。当我查看控制台时,它会说,“jQuery没有定义。”但是,我知道我正确地将脚本文件排队。有什么想法吗

HTML文件:

<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 );