많은 이미지와 무한 스크롤이있는 페이지가 있습니다. 그래서, 나는 그들이 뷰포트에서 갈 때 이미지를 잃고 싶지과 다시 스크롤 할 때 다시 그들에게 보여DOM에 동적으로 추가 된 이미지가 표시되지 않습니다.
이것은 예를 들어 이미지 및 유지 DIV이다.
<div class="imgHldr2" data-content="<img src=/path/to/my/image.jpg class=wImage>">
<img src=/path/to/my/image.jpg class=wImage>
</div>
때 클래스를 가진 요소 imgHldr2
뷰포트에서 나가기 이미지를 숨긴 다음 data-content
내용에서 다시 빌드합니다.
이미지를 DOM에 다시 추가 할 때 이미지가 렌더링/표시되지 않을 때 완전히 완벽하게 작동합니다. 여기에 내가 그것을하고있어 방법은 다음과 같습니다
$(window).scroll(function() {
if(timer) {
window.clearTimeout(timer);
}
timer = window.setTimeout(function() {
$(".imgHldr2:below-the-fold").each(function() {
$(this).next('.wImage').detach();
});
$(".imgHldr2:above-the-top").each(function() {
$(this).next('.wImage').detach();
});
$(".imgHldr2:in-viewport").each(function() {
// the next line puts the content back in as I can see it in inspector
// but it doesn't actually redraw it
$(this).append($(this).data('content'));
});
}, 350);
});
SRC의 URL을가 인용 또는 이중 인용에있을 필요가 없다? –
왜 참조를 저장하지 않고 '분리'합니까? 제거 된 객체를 어딘가에 (예를 들면 홀더의 데이터에서)'remove'하거나 저장하십시오. 한가지 더,'next' 사용에 확신 하시겠습니까? 아니면'find'가 더 적절한가? –
@FilipSpiridonov 내가 말했듯이, 그것은 완벽하게 작동합니다. DOM에서 제거하는 방법과 아무 관련이 없습니다. DOM을 다시 도입 할 때 이미지를 다시 표시하는 것과 관련이 없습니다. 참조를 저장하지 않고 분리하지 않고 참조가 이미지 홀더의 데이터 내용 필드에 표시됩니다. –