【发布时间】:2018-04-30 22:35:29
【问题描述】:
当元素之一 #checkPosition 到达窗口顶部时,我只尝试调用函数 myFunction 一次,但是因为我必须使用 $(window).scroll() 来检测动作(滚动)并且在某些时候totalScroll的滚动值总是大于该元素到顶部的距离indicatorPosition,函数被多次调用。
我怎样才能只调用一次这个函数?
HTML:
<div class="section section--1">
<p>Section 1</p>
</div>
<div class="section section--2">
<p>Section 2</p>
<div id="checkPosition" class="indicator">Check position</div>
<div id="targetElement" class="target">Target: </div>
</div>
CSS(只是为了获得一些高度):
.section {
min-height: 1000px;
}
JS:
const indicatorPosition = $('#checkPosition').offset().top;
console.log("indicators initial position:", indicatorPosition);
var myFunction = function(){
$('#targetElement').append('new text goes here only once. ');
console.log("call me only once");
}
$(window).scroll(function(){
var totalScroll = $(window).scrollTop();
if (totalScroll > indicatorPosition) {
myFunction();
}
});
【问题讨论】:
-
为什么,如果这个值始终保持不变?
标签: javascript jquery scroll scrolltop