웹 페이지에는 제품 카드 (이미지와 텍스트가 포함 된 제품 카드) 목록이 아주 많습니다. 약 1000 개입니다. 클라이언트에서이 목록을 필터링하고 싶습니다 (필터링되지 않은 항목 만 표시되어야 함). 그러나 렌더링 성능 문제가 있습니다. 매우 좁은 필터를 적용하고 10-20 개의 항목 만 남은 다음 취소 (모든 항목을 다시 표시해야 함)하고 브라우저 (매우 멋진 컴퓨터의 Chrome)가 2 ~ 2 분 동안 중단됩니다.javascript를 사용하여 대량의 DOM 요소를 최적으로 렌더링하는 방법은 무엇입니까?
나는 다음과 같은 일상적인 사용하여 목록을 렌더링 재 :
for (var i = 0, l = this.entries.length; i < l; i++) {
$(this.cls_prefix + this.entries[i].id).css("display", this.entries[i].id in dict ? "block" : "none")
}
DICT 허용 항목의 식별자
자체가 즉시 실행이 기능의 해시, 그것은 그 렌더링 것은 끊습니다. DOM 요소의 "표시"속성을 변경하는 것보다 더 최적의 재 렌더링 방법이 있습니까?
미리 답변 해 주셔서 감사합니다.
1000 개의 요소를 다시 렌더링하는 데 1 ~ 2 초가 걸립니까? 나는 1000 개의 요소가 언제든지 모두 보이지 않을 것이므로 아마도 보이는 항목을 처리 한 다음 백그라운드에서 작업하여 나머지를 사용할 수있게 할 것입니다 (각 배치 사이에 setTimeout()을 사용하여 패스 당 50 개를 수행하여 브라우저를 활성 상태로 유지). 또는 스크롤링으로 인해 실제로 표시 될 때만 다시 렌더링해야합니다. 또한 전체 DOM을 검색해야하는 1000 개의 별도의 선택기 연산을 실행하는 데 도움이되지 않습니다. – jfriend00
작업 할 jsFiddle을 주면 스위치 오버 성능을 10 배 향상시킬 수있을 것이라고 확신합니다. 그 코드에는 많은 육즙이 많은 지방이 있습니다. – jfriend00