为什么Wordpress会加载我的jQuery脚本?

时间:2017-07-08 16:48:20

标签: javascript php jquery html wordpress

我的wordpress网站不会将脚本加载到我的页面中。我在functions.php中添加了以下函数:

function nav_script () {

    wp_enqueue_script( 'script', get_stylesheet_directory_uri() .'/js/script.js', array('jQuery'), '1.0.0', true);

}

add_action('wp_enqueue_scripts', 'nav_script'); 

并且scripts.js中包含的脚本如下:

$(document).ready(function() {
    var stickyNavTop = $('.blog-nav').offset().top;

        var stickyNav = function(){
        var scrollTop = $(window).scrollTop();

                    if (scrollTop > stickyNavTop) { 
                        $('.blog-nav').addClass('sticky');
                    } 
                    else {
                        $('.blog-nav').removeClass('sticky'); 
                    }
                };

            stickyNav();

        $(window).scroll(function() {
            stickyNav();
    });
});

当我查看页面的源代码时,我看不到脚本,所以它因某些原因没有加载...我的头部有wp_head而正文之前有wp_footer结束标记,所以我对可能发生的事情一无所知,那里的任何人都可以提供帮助吗?正如我在JSFiddle中尝试的那样,该函数在普通的html中运行...

编辑...伙计我通过添加脚本"手动"这个函数,如下:

    function nav_script () {
        ?>
        <script>

            $(document).ready(function() {
                                var stickyNavTop = $('.blog-nav').offset().top;

                                    var stickyNav = function(){
                                    var scrollTop = $(window).scrollTop();

                                    if (scrollTop > stickyNavTop) { 
                                            $('.blog-nav').addClass('sticky');
                                    } else {
                                            $('.blog-nav').removeClass('sticky'); 
                                    }
                                    };

                                    stickyNav();

                                    $(window).scroll(function() {
                                        stickyNav();
                                });
                            });

        </script>
        <?php
    }

add_action('wp_head', 'nav_script');    

但我注意到两件事: 一:如果我不将<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> CDN插入头部,它就不会起作用; TWO:它只会在我重新加载网站时才有效,这表明我有一些插件冲突......

2 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。对于第一个问题,即.js文件没有加载到页面中,因为源代码中没有。我使用的代码类似于我之前使用的代码,只是更简单,删除了{ {1}}以及与版本和页脚相关的值,如下所示:function

array

...我无法准确说出原因,但如果您将我的源代码与我在评论中发布的源代码进行比较,您会注意到&#39; /js/script.js&的存在#39 ;. - 页面来源:https://jsfiddle.net/qx5fbxa7/ - 。

第二个问题:除非我刷新页面(如编辑),否则脚本不会加载...我用条件逻辑设置条件来设置类:

blognav_script () {
    wp_enqueue_script('blognav', get_stylesheet_directory_uri() . '/js/script.js');
}

add_action('wp_enqueue_scripts', 'blognav_script');

我实际上改变了整个脚本,但是为了指出如何解决这个问题,这就是修复它的行!

答案 1 :(得分:-1)

WordPress无法将$识别为jQuery的缩写,只需添加

var $ = jQuery

在顶部