我收到" Uncaught ReferenceError:$未定义"我使用延迟时出错。
Q值。如何正确推迟此脚本?代码是
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script>
$(document).ready(function () {
$(window).scroll(function () {
if ($(this).scrollTop() > 600) {
$('.scrollup').fadeIn();
} else {
$('.scrollup').fadeOut();
}
});
$('.scrollup').click(function () {
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
});
});
</script>
<!--end-->
答案 0 :(得分:1)
在这种特定情况下,您可以使用setInterval()
函数等待jQuery准备就绪。
function start_scripts(){
$(document).ready(function () {
$(window).scroll(function () {
if ($(this).scrollTop() > 600) {
$('.scrollup').fadeIn();
} else {
$('.scrollup').fadeOut();
}
});
$('.scrollup').click(function () {
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
});
});
}
var jQ_interval = setInterval(function(){
if(typeof jQuery == 'function'){
clearInterval(jQ_interval);
start_scripts();
}
}, 300); // You can change 300 to other delay
但如果有更多代码要执行,我不会推荐这种方法。更好的解决方案是不推迟jQuery,而是推迟其他脚本。
答案 1 :(得分:0)
defer
导致该脚本在解析文档之后才会运行。如果它之后的其他脚本依赖于该脚本(在这种情况下,依赖于jQuery),它们也应该添加defer
(使用defer
时保留加载顺序)否则它们可能会加载< em>之前之前的defer
ed脚本。
如果您有依赖于defer
ed脚本的内联脚本,则必须将它们移动到外部文件(并添加src
&amp; defer
),如同内联脚本不能推迟。