2016-08-17 1 views
0

스크롤 상단에 테이블을 놓고 고정 할 때 머리글을 제거하려고합니다. 그러나 빠르게 스크롤 할 때, 아래의 코드는 가시성을 충분히 빠르게 숨기지 않고 루프로 인해 내 테이블의 고정 된 머리글을 계속 표시합니다 (아마도?). 어떻게 제대로 숨길 수 있습니까? 내가 고쳐 놓은 방식은 내가 원하지 않는 것입니다 : 테이블 끝에서 확인하고 모든 것을 숨 깁니다.빠른 스크롤 설정이 가시성을 충분히 숨김

스크롤 속도가 빠르다는 것은 스크롤 막대를 잡는 것입니다. 또는 스크롤바를 클릭하여 아래로 이동하십시오.

+0

'tableResults'의 배열은 얼마나 큽니까? 해당 배열을 반복하는 루프는 스크롤 이벤트가 발생할 때마다 발생합니다. 대부분주의 할 점이 있습니다. 자세한 내용은 https://developer.mozilla.org/en-US/docs/Web/Events/scroll을 참조하십시오. 내가 생각하는 그 기사에서 그들이 가지고있는 예는 당신이 원하는 것에 가깝습니다. – dgarbacz

+0

1 - 180 개의 테이블, 사용자가보고 싶은 필터에 따라 다름 – fsi

+0

조금 개선되었지만 매우 빠르게 스크롤 할 때 예상대로 가시성을 적용하지 않음 – fsi

답변

0

각각의 스크롤은 모든 경우에 else if 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 
} 
관련 문제