使用 scrollTop 在 JQuery 中清除和设置间隔
Clear and Set interval in JQuery using scrollTop
我想设置和清除间隔,当我滚动(到达)到特定的 divs 时,但是,它不适用于 scrollTop。
它应该clear/stop我向下滚动到第二个时的间隔div但它不会停止并继续前进。
JQuery:
function imageSlide() {
$('#my-image').fadeOut(1000).fadeIn(1000);
}
$(window).scroll(function() {
var scroll_top = $(document).scrollTop();
var fisrt_div_top = $('#first-div').position().top;
var second_div_top = $('#second-div').position().top;
if(scroll_top >= fisrt_div_top && scroll_top < second_div_top){
intervalID = setInterval(imageSlide, 2000);
}
if(scroll_top > second_div_top){
clearInterval(intervalID);
}
});
您不止一次设置了时间间隔。您需要检查以确保您尚未将其设置为这种情况。
if(scroll_top >= fisrt_div_top && scroll_top < second_div_top){
intervalID = setInterval(imageSlide, 2000);
}
像这样。
function imageSlide() {
console.log('image slide is happening');
}
$(window).scroll(function() {
var scroll_top = $(document).scrollTop();
var fisrt_div_top = $('#first-div').position().top;
var second_div_top = $('#second-div').position().top;
if(
scroll_top >= fisrt_div_top &&
scroll_top < second_div_top &&
window.intervalID === undefined
){
window.intervalID = setInterval(imageSlide, 2000);
}
if(scroll_top > second_div_top){
clearInterval(window.intervalID);
}
});
html {
overflow-y: scroll; /* Show vertical scrollbar */
overflow-x: scroll; /* Show horizontal scrollbar */
height: 9000px !important;
width: 9000px !important;
}
#first-div {
position: absolute;
top: 100px;
height: 100px;
border: 1px black solid;
}
#second-div {
position: absolute;
top: 300px;
height: 100px;
border: 1px black solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="first-div">div one</div>
<div id="second-div">div two</div>
我想设置和清除间隔,当我滚动(到达)到特定的 divs 时,但是,它不适用于 scrollTop。
它应该clear/stop我向下滚动到第二个时的间隔div但它不会停止并继续前进。
JQuery:
function imageSlide() {
$('#my-image').fadeOut(1000).fadeIn(1000);
}
$(window).scroll(function() {
var scroll_top = $(document).scrollTop();
var fisrt_div_top = $('#first-div').position().top;
var second_div_top = $('#second-div').position().top;
if(scroll_top >= fisrt_div_top && scroll_top < second_div_top){
intervalID = setInterval(imageSlide, 2000);
}
if(scroll_top > second_div_top){
clearInterval(intervalID);
}
});
您不止一次设置了时间间隔。您需要检查以确保您尚未将其设置为这种情况。
if(scroll_top >= fisrt_div_top && scroll_top < second_div_top){
intervalID = setInterval(imageSlide, 2000);
}
像这样。
function imageSlide() {
console.log('image slide is happening');
}
$(window).scroll(function() {
var scroll_top = $(document).scrollTop();
var fisrt_div_top = $('#first-div').position().top;
var second_div_top = $('#second-div').position().top;
if(
scroll_top >= fisrt_div_top &&
scroll_top < second_div_top &&
window.intervalID === undefined
){
window.intervalID = setInterval(imageSlide, 2000);
}
if(scroll_top > second_div_top){
clearInterval(window.intervalID);
}
});
html {
overflow-y: scroll; /* Show vertical scrollbar */
overflow-x: scroll; /* Show horizontal scrollbar */
height: 9000px !important;
width: 9000px !important;
}
#first-div {
position: absolute;
top: 100px;
height: 100px;
border: 1px black solid;
}
#second-div {
position: absolute;
top: 300px;
height: 100px;
border: 1px black solid;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div id="first-div">div one</div>
<div id="second-div">div two</div>