jQuery on Underscores menu

时间:2017-11-23 作者:user2265915

我试图向主菜单中的元素添加一个类,但什么都没有发生。我使用的是下划线起始主题,标题中有这个。php:

<?php
    wp_nav_menu( array(
        \'theme_location\' => \'menu-1\',
        \'menu_id\'        => \'primary-menu\',
        \'after\'          => \'<span class="fa fa-times"></span>\',
    ) );
?>
然后我把这个放在导航中。js文件(也尝试在footer.php中内联):

$(".menu-item-has-children .span").click(function() {
    $(".menu-item-has-children .sub-menu").removeClass("toggled");
    $(this).next(".sub-menu").toggleClass("toggled");
});
但什么都没发生。我还尝试了一个简单的方法:

$(\'body\').click(function() {
    alert("Yeah!");
});
那里也没有发生任何事情。这确实有效:

window.onload = function() {
    alert("Yeah!");
}
jQuery正在加载:

<script type=\'text/javascript\' src=\'http://example.com/wp-includes/js/jquery/jquery.js?ver=1.12.4\'></script>
导航。js在函数中排队。php:

function themename_scripts() {

wp_enqueue_style( \'themename-style\', get_stylesheet_uri() );

wp_enqueue_script( \'themename-navigation\', get_template_directory_uri() . \'/js/navigation.js\', array(), \'20151215\', true );

wp_enqueue_script( \'themename-skip-link-focus-fix\', get_template_directory_uri() . \'/js/skip-link-focus-fix.js\', array(), \'20151215\', true );

if ( is_singular() && comments_open() && get_option( \'thread_comments\' ) ) {
    wp_enqueue_script( \'comment-reply\' );
}
}
add_action( \'wp_enqueue_scripts\', \'themename_scripts\' );
。。。那么我犯了什么基本错误呢?

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

您还没有将jquery作为脚本的依赖项传递,您也在使用美元符号,由于冲突,WordPress不直接支持美元符号。

首先,在排队时将jQuery作为一个要求传递给navigation.js:

wp_enqueue_script( 
    \'themename-navigation\', 
    get_template_directory_uri() . \'/js/navigation.js\', 
    array(\'jquery\'), 
    \'20151215\', 
    true 
);
然后,将代码包装在一个自调用函数中:

(function($){
    // You have access to $ here
})(jQuery);
或者更好的是,定义$:

var $ = jQuery.noConflict();

$(\'body\').click(function() {
    alert("Yeah!");
});
完成。

结束