我想在div滚动到视口时启动一个函数。我的问题是,每次我继续滚动时,该功能都会再次触发/启动。
HTML:
<div class="box"></div>
JS:
$(document).ready(function() {
function start() {
alert("hello");
}
$(window).scroll(function() {
if ( $(window).scrollTop() >= $('.box').offset().top - ($(window).height() / 2)) {
$(".box").addClass("green");
start();
} else {
$(".box").removeClass("green");
}
});
});
总而言之:当div滚动到viewport时,应该启动函数“start”。但它应该不会再被触发,在它被触发一次之后。
Fiddle
5条答案
按热度按时间x0fgdtte1#
您可以设置一个标志,如:
tkclm6bt2#
cig3rfwq3#
有很多方法可以解决这个问题。你可以只删除事件监听器(因为你使用的是jQuery,我将使用
on
和off
方法):kcugc4gi4#
如果你想让窗口滚动方法在启动方法满足其要求后停止..你可以这样做
x3naxklr5#
当
$(".box)
没有类"green"
(在一定量的滚动后添加)时,只需运行start()
函数。