不在屏幕上时丢失元素

问题描述:

我试图在屏幕上消失元素,然后出现新元素。 问题是,即使它不是在屏幕外,但在每个卷轴上,元素都会消失。不在屏幕上时丢失元素

这里是我的代码:

$(window).scroll(function() { 
    scrollHide('#zabiegi'); 
}); 

function scrollHide(sectionId) { 
    if ($(window).width() < 968) { 
     $(sectionId).each(function() { 
      if (($(sectionId).find('.two').offset().top - $(window).scrollTop()) < 20) { 
       $(sectionId).find('.two').stop().fadeOut("slow", function() { 
        $(sectionId).find('.one').fadeIn(); 
        updateMargin(sectionId,'.one'); 
       }); 
      } 
     }); 
    } 
} 

我也已经tryied不同的方法,这一次 - 什么也没有发生,如果语句总是提供虚假。

$(window).scroll(function() { 
    scrollHide('#zabiegi'); 
}); 

function scrollHide(sectionId) { 
    if ($(window).width() < 968) { 
     $(sectionId).each(function() { 

      var off = $(sectionId).find('.two').offset(); 
      var t = off.top; 
      var h = $(sectionId).find('.two').height(); 
      var docH = $(window).height(); 
      console.log(t > 0 && t + h < docH); 

      if (t > 0 && t + h < docH) { 
       $(sectionId).find('.two').stop().fadeOut("slow", function() { 
        $(sectionId).find('.one').fadeIn(); 
        updateMargin(sectionId,'.one'); 
       }); 
      } 
     }); 
    } 
} 

好的,我找到了一个解决方案。问题在于if条件语句中。 下面是代码:

function scrollHide(sectionId) { 
    if ($(window).width() < 968) { 
     $(sectionId).each(function() { 
      if (($(sectionId).find('.two').offset().top + $(sectionId).find('.two').outerHeight() - $(window).scrollTop()) < 0 ) { 
       $(sectionId).find('.two').stop().fadeOut("slow", function() { 
        $(sectionId).find('.one').fadeIn(); 
        updateMargin(sectionId,'.one'); 
       }); 
      } 
     }); 
    } 
}); 

但仍然有问题...上面的脚本作品只有当我向下滚动不起来 ......所以我加入条件语句:

if (($(sectionId).find('.two').offset().top + $(sectionId).find('.two').outerHeight() - $(window).scrollTop()) < 0 || ($(sectionId).find('.two').offset().top - $(sectionId).find('.two').outerHeight() + $(window).scrollTop()) < 0) { 

并在console.log输出是好的 - 它显示0当我上面的元素,但仍然不工作...