我正在尝试在用户滚动时隐藏ID为#stats的按钮,然后我希望它在滚动完成时淡入。
出于某种原因,这在以下方面无效。
感谢您的帮助!
<button id="stats">
<span class="icon prs"></span><h3 id="views" class="prm">@file.views</h3>
<span class="icon prs"></span><h3 id="comments">20</h3>
</button><!--end stats-->
<script>
//fade stats in on load
$(function(){ // $(document).ready shorthand
$('#stats').hide().fadeIn('slow');
});
//hide stats when scrolling
var $stats = $("#stats");
var opacity = $stats.css("opacity");
var scrollStopped;
var fadeInCallback = function () {
if (typeof scrollStopped != 'undefined') {
clearInterval(scrollStopped);
}
scrollStopped = setTimeout(function () {
$stats.animate({ opacity: 1 }, "slow");
}, 200);
};
$(window).scroll(function () {
if (!$stats.is(":animated") && opacity == 1) {
$stats.animate({ opacity: 0 }, "slow", fadeInCallback);
} else {
fadeInCallback.call(this);
}
});
</script>
答案 0 :(得分:4)
我会尝试简化一下,做一些更像这样的事情:
$(function(){
var stats = $('#stats'),
vis = true;
timer,
stats.hide().fadeIn('slow');
$(window).on('scroll', function() {
clearTimeout(timer);
if (vis) {
stats.stop(true,true).fadeOut('slow');
vis = false;
}
timer = setTimeout(function() {
stats.stop(true,true).fadeIn('slow');
vis = true;
}, 400);
});
});