2016-08-17 104 views
0

我想在滾動頂部離開表格時刪除固定標題。但是當我快速滾動時,我的代碼下面不能夠隱藏足夠快的顯示,並且由於循環(可能?)而不斷顯示錶格的固定標題。我如何正確隱藏它?我固定的方式不是我想要的:檢查桌子底部並隱藏一切。滾動快速無法設置隱藏的可見性不夠

當我說滾動速度很快時,就是要讓滾動條保持不動。或者按住單擊滾動條向下。

$window.addEventListener("scroll", function() { 
    var tab = $("div[name='" + tabScroll + "']")[0]; 
    var tableResults= tab.getElementsByClassName('results'); // get all tables(lots of tables) 

    //loop all tables to check if the top scroll is inside of table specific. 
    $(tableResults).each(function(index, element){ 
     var link = $(element); 
     var offset = link.offset(); 
     var top = offset.top; 
     var bottom = top + link.outerHeight(); 
     var inside = ($(document).scrollTop() >= $(element).offset().top && $(document).scrollTop() <= bottom-150) 
     if(inside){ 
      toggleHeader(element, "visible"); 
     } else if($(document).scrollTop() >= $(element).offset().top && $(document).scrollTop() <= bottom){ 
      toggleHeader(element, "hidden"); 
     } 
    });   
});  

function toggleHeader(x, v) { 
    $(x).find('thead').css('visibility', v); 
    $(x).parent().parent().find('.float-left-div').children().css('visibility', v); 
} 
+0

'tableResults'數組有多大?遍歷該數組的循環在每次觸發滾動事件時都會觸發,最有可能導致您注意到的掛斷。在這裏閱讀更多信息https://developer.mozilla.org/en-US/docs/Web/Events/scroll。他們在那篇文章中的例子我認爲接近你想要的。 – dgarbacz

+0

1到180個表格,取決於用戶想要查看的過濾器 – fsi

+0

它稍微改進了一些,但仍然無法按預期的方式應用可見性,滾動速度非常快 – fsi

回答

0

每個滾動,它都會調用else if + else if在一切之外。每個循環內的代碼如下。

var element = angular.element(val); 

var positionOutsideOfTable = $(element).offset().top + $(element).outerHeight(); 
var inside = (scrollY >= $(element).offset().top && scrollY <= positionOutsideOfTable - 200); 

if (inside) { 
    // I'm inside of this table yay 
} else if (scrollY >= $(element).offset().top && scrollY <= positionOutsideOfTable + $(document).height()) { 
    // I'm below the table and at same time I'm out of everything :(
} else { 
    // I'm out of everything 
} 
相關問題