[英]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.