滚动快速倾斜设置可见性隐藏得足够多

时间:2016-08-17 15:05:11

标签: jquery css

我正在尝试在将表格保留在滚动顶部时删除固定标题。但是当我快速滚动时,我的代码不能将可见性隐藏得足够快,并且由于循环(可能是?)而继续显示我的表的固定标题。我怎样才能正确隐藏它?我修复的方式不是我想要的:检查表的末尾并隐藏所有内容。

当我说快速滚动时,就是按住栏滚动。或者按住滚动条向下滚动。

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

1 个答案:

答案 0 :(得分:0)

每个滚动,如果是+ else,它将调用else,否则调用。每个循环内部的代码。

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
}