繁体   English   中英

为什么wordpress无法加载我的jQuery脚本?

[英]Why won't wordpress load my jQuery script?

我的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,而body结束标记前是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> ,它将无法正常工作<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> CDN在头部; 二:只有在我重新加载网站后,它才起作用,这表明我出现了一些插件冲突...

我已经解决了我的问题。 对于第一个问题,就是没有将.js文件加载到页面中,而没有在源文件中加载该文件,我使用了与之前使用的代码相似的代码,只是更简单了,删除了array和相关的值到版本和页脚,就像这样:function

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

add_action('wp_enqueue_scripts', 'blognav_script');

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

第二个问题:除非刷新页面(如编辑的那样),否则脚本将无法加载...我通过设置包含类条件的条件逻辑解决了:

// function to run on page load and window resize
    function stickyUtility() {

        // only update navOffset if it is not currently using fixed position
        if (!jQuery(".blog-nav").hasClass("fixed")) {
            navOffset = jQuery(".blog-nav").offset().top;
        }

// run on page load
    stickyUtility();

我实际上更改了整个脚本,但要指出如何解决此问题,以下几行将解决此问题!

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

var $ = jQuery

在上面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM