Как отследить в браузере завершение отрисовки отдельного элемента после ajax запроса

Есть ajax запрос

    $.ajax({
        url: '/site',
        method: httpMethod,
        dataType: 'html',
        data: object,
        success: function(data){
            $('.modal').html(data);
            $('.modal').show();
            let offset = $('.modal-element').offset();
        }
    })

После успешного запроса, сервер выдает кусок html кода, который вставляется в уже существующий на странице блок с классом .modal, этот блок изначально имеет display: none.

Затем при наступлении какого-то события блок с классом .modal становится видимым (display: block) и задача состоит в том, чтобы узнать расположение некоторых элементов в этом блоке, для понимания того, находятся они сейчас в видимой пользователю области или нет. Но если написать так, как показано выше, то свойства объекта offset будут равны нулю. Я это понимаю так, что браузер не успевает отрисовать эти элементы, чтобы определить их размер и их позицию на экране. Если перед строчкой

let offset = $('.modal-element').offset();

вставить setTimeout, то все работает хорошо, положение элементов определяется верно. Но со значениями setTimeout не угадаешь, у всех отрисовка будет занимать разное время. Можно ли как-то отследить момент отрисовки отдельного блока .modal? Чтобы вычислять offset только когда все элементы уже точно заняли свои места на экране.


Ответы (0 шт):