Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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
Wordpress子主题jQuery与父主题冲突';s jQuery_Jquery_Wordpress_Wordpress Theming - Fatal编程技术网

Wordpress子主题jQuery与父主题冲突';s jQuery

Wordpress子主题jQuery与父主题冲突';s jQuery,jquery,wordpress,wordpress-theming,Jquery,Wordpress,Wordpress Theming,我开发了一个Wordpress子主题,在其中我将jQuery排队: wp_enqueue_script('jquery-js', '//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'); 但它与父主题中排队的jQuery相冲突 因此,我删除了上面的排队脚本,并在脚本排队中添加了依赖项: wp_enqueue_script('main-js', get_theme_file_uri('/js/scripts-bundled.js

我开发了一个Wordpress子主题,在其中我将jQuery排队:

wp_enqueue_script('jquery-js', '//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js');
但它与父主题中排队的jQuery相冲突

因此,我删除了上面的排队脚本,并在脚本排队中添加了依赖项:

wp_enqueue_script('main-js', get_theme_file_uri('/js/scripts-bundled.js'), array('jquery'), '1.2', true);
但它不起作用(在浏览器控制台中出现错误“$不是函数”)。我检查了页面源代码,发现父主题的脚本在子主题的脚本之后加载


如何解决这个问题?

第一种方法是错误的,您不应该将外部jQuery文件排队

第二种方法是正确的,但有一个小问题可以通过以下两种方法之一解决:

  • 在js/scripts-bundled.js中将所有$symbol替换为jQuery。这将解决问题。这比我下面写的更正确

  • 使用以下脚本禁用jQuery Noconflict模式:(您可以将其添加到主题的functions.php中)


  • 我可以建议另一种方法是理想的吗?不要用
    jQuery
    替换所有
    $
    ,而是将所有jQuery包装在一个无冲突的安全文档中,如下所示:
    jQuery(函数($){/…$在这里使用是安全的…})-我不建议禁用无冲突模式。。。。WP这样做是有原因的!我采取了#1方法,解决了问题。非常感谢!为什么我不能使用$?
    
    function disable_noconflict() {
    wp_add_inline_script( 'jquery-core', '$ = jQuery;' );
    }
    add_action( 'wp_enqueue_scripts', 'disable_noconflict' );