2016-08-30 135 views
0

我有无限滚动,每次顶部滚动达到div的某个部分,它会加载一个新的内容,直到它结束。但每次加载时,速度都很慢。当我在.each函数中放入一些代码时,会发生这种情况,并且我的滚动变得非常慢,这很烦人。我不知道如何解决它jQuery滚动scrollTop位置滚动非常慢

function scrollAnimationFrame(ticking, windowHeight, tabSelected){ 
    if (!ticking) { 
     window.requestAnimationFrame(function() { 
      scrollEvent(tabSelected, windowHeight); 
      ticking = false; 
     }); 
    } 
    ticking = true; 
} 

function scrollEvent(tabSelected, windowHeight) { 
    var activeTab = document.getElementsByName(tabSelected)[0] 
    var divResults = activeTab.getElementsByClassName('div-content'); 
    var scrollY = window.scrollY || document.documentElement.scrollTop; 
    var pos = $(window).scrollTop(); 

    var scrollY = window.scrollY || document.documentElement.scrollTop; 

    $(divResults).each(function(i, el){ 
     var posOutsideDiv = $(el).offset().top + $(el).outerHeight(); 
     var inside = (scrollY >= $(el).offset().top && scrollY <= posOutsideDiv - 150) 

     if(inside){ 
      toggleThead(el, "visible"); 
     } else if(scrollY >= $(el).offset().top && scrollY <= posOutsideDiv + $(document).height()){ 
      toggleThead(el, "hidden"); 
     } else { 
      toggleThead(el, "visible"); 
     } 
    }); 
} 
+0

什么变得缓慢?完全滚动页面或只在追加新元素时很慢? – martin

+0

你想滚动到浏览器窗口的顶部吗?或者到一个元素的顶部?这可能是因为你在.each()中做了你的数学运算。如果你有很多行数据,那么它会计算已经发布的每个元素,循环,然后滚动到每个元素的顶部,直到它达到你想要的。你可以滚动到父元素的顶部吗?你有没有想要完成的例子? – ClosDesign

+0

@Martin页面在每次添加新元素时变得越来越慢 – fsi

回答

0

好吧,我以为是滚动每次追加新的内容越来越慢的JavaScript。所以我检查了AngularJs,并且我重新使用了指令模板。因此,基本上为每个模板和voilá创建两个指令(讨厌这样做)。没有更多的慢滚动。