Для обработки события scroll нужно узнать высоту документа: var heightPage=$('body').outerHeight(true);
Но если на странице есть асинхронные элементы AJAX влияющие на высоту, то outerHeight(true) выдает не правильный результат. Понятно, что нужно узнавать высоту после загрузки всех элементов AJAX на странице, но как отследить их загрузку?
Очевидно, что нужно использовать обьект deferred, и видимо с функцией $.when(). Два дня пытаюсь разобраться как использовать этот обьект, ничего не получается.
У меня есть пользовательская функция, которая вызывается несколько раз на странице (по количеству AJAX элементов):
var ajaxchange = function(ser, ths){
var ld=$('<div class="loader-wrapper-str"><div class="loader"></div></div>');
$.ajax({
url:"/include/data.php",
type: "GET",
data: ser,
beforeSend:function(){
ths.replaceWith(ld);
},
success:function(result){
ld.replaceWith(result);
}
});
}
// Вызываю ее для каждого элемента
$('.js-ajax-data').each(function(){
var ths=$(this);
ajaxchange({tm: ths.data('id'), ser: ths.data('ser')}, ths);
});
// После загрузки нужно узнать высоту. Как?
var heightPage=$('body').outerHeight(true);
Как к этой функции прикрутить проверку что все элементы загружены? Допишите, пожалуйста, прям в моем коде. Очень нужна помощь!