Javascript 带有scrolltop的If语句不起作用

Javascript 带有scrolltop的If语句不起作用,javascript,jquery,Javascript,Jquery,我试图使动画发生一旦网页是在网页的某一部分。我看过其他人的问题,我的问题与之类似,但它不起作用 代码如下: if($('html,body').scrollTop() > 400) { $('.fish_one').animate({"margin-left":"+=65%"},1000); $('.fish_two').animate({"margin-left":"-=10%"},1000); $('.left').animate({"opacity":"+=1"

我试图使动画发生一旦网页是在网页的某一部分。我看过其他人的问题,我的问题与之类似,但它不起作用

代码如下:

if($('html,body').scrollTop() > 400) {
   $('.fish_one').animate({"margin-left":"+=65%"},1000);
    $('.fish_two').animate({"margin-left":"-=10%"},1000);
    $('.left').animate({"opacity":"+=1"},1000); 
    $('header').css({"background-color":"#fff"});
    $('header a').css({"color":"#94d9f8"});

}您需要在每次页面滚动时检查if语句,而不仅仅是在加载时。使用$(窗口)。滚动(函数(){

编辑:要防止函数自身重复,请执行以下操作:

var pos = false;
$(window).scroll(function(){
    if(($(window).scrollTop() > 400) !== pos ){
        alert("changed");
    }
    pos = $(window).scrollTop() > 400;
 });


尝试将其添加到事件侦听器,如下所示:

var eventTriggered=false;
$(document).on( 'scroll', function(){
    if($(document).scrollTop() > 400 && !eventTriggered) {
        alert("success");
        eventTriggered=true;
    }else if($(document).scrollTop() < 400){
        eventTriggered=false;
    }     
});
var eventTriggered=false;
$(文档).on('scroll',function(){
if($(document).scrollTop()>400&!事件已触发){
警惕(“成功”);
eventTriggered=true;
}else if($(文档).scrollTop()<400){
eventTriggered=false;
}     
});

这一个可以工作

,它确实可以工作事件侦听器,但函数会重复自身,例如,它将执行边距部分none stop。它仍然不工作。它将我重定向回页面顶部。
var pos = false;
$(window).scroll(function(){
    if(($(window).scrollTop() > 400) && !pos ){
        alert("just passed breakpoint");
    }
    pos = $(window).scrollTop() > 400;
 });
var eventTriggered=false;
$(document).on( 'scroll', function(){
    if($(document).scrollTop() > 400 && !eventTriggered) {
        alert("success");
        eventTriggered=true;
    }else if($(document).scrollTop() < 400){
        eventTriggered=false;
    }     
});