솔루션을 포장하는 멋진 기능을 찾으려고 시간을 보냈습니다. 어쨌든, 여러 페이지를 단일 페이지 또는 사이트에로드 할 때 더 나은 솔루션이라고 생각하는 것으로 끝났습니다.
함수:
function ifViewLoadContent(elem, LoadContent)
{
var top_of_element = $(elem).offset().top;
var bottom_of_element = $(elem).offset().top + $(elem).outerHeight();
var bottom_of_screen = $(window).scrollTop() + window.innerHeight;
var top_of_screen = $(window).scrollTop();
if((bottom_of_screen > top_of_element) && (top_of_screen < bottom_of_element)){
if(!$(elem).hasClass("ImLoaded")) {
$(elem).load(LoadContent).addClass("ImLoaded");
}
}
else {
return false;
}
}
그런 다음 스크롤 할 때 창을 사용하여 함수를 호출 할 수 있습니다 (예를 들어, 내가하는 것처럼 클릭 등에 바인딩 할 수도 있습니다).
쓰다:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
이 방법은 div 등을 스크롤하는데도 효과적입니다. 위의 질문 에서이 방법을 사용하여 콘텐츠를 섹션에로드하고 대량 피드 대신 이미지 데이터를 추가하여 드리블 할 수 있기를 바랍니다.
https://www.taxformcalculator.com 에서 오버 헤드를 줄이기 위해이 접근법을 사용했습니다 . 사이트를보고 요소 등을 검사하면 트릭이 죽었습니다. 예를 들어 Chrome의 페이지로드에 영향을 줄 수 있습니다.
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
첫 번째 행은 요소를 멋지게 추가하고 두 번째는 함수가 페이지의 맨 아래에서 멈추지 않도록합니다.