2016-04-25 76 views
0

我試圖在屏幕上消失元素,然後出現新元素。 問題是,即使它不是在屏幕外,但在每個卷軸上,元素都會消失。不在屏幕上時丟失元素

這裏是我的代碼:

$(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'); 
       }); 
      } 
     }); 
    } 
} 

回答

0

好的,我找到了一個解決方案。問題在於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當我上面的元素,但仍然不工作...