Возможно ли при помощи JavaScript (jQuery) отловить момент изменения размера какого-либо элемента?

Нужно что-то вроде такого:

$('body').heightChanged(function(){<br>
    alert('event');<br>
});<br>
<br>
$('body').append('Hello!'); // и тут показывается алерт




Возможно ли такое сделать?
  • Вопрос задан
  • 13781 просмотр
Решения вопроса 1
barmaley_exe
@barmaley_exe
А с чего бы высоте элемента измениться? Отслеживайте причину, а не результат.

Как вариант, конечно, можно каждые N миллисекунд проверять, не изменилась ли высота и, если да, то вызывать функцию, но столь частый подсчет высоты может крайне негативно сказаться на производительности (reflow / repaint).
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Vas3K
@Vas3K
Ответ написан
Комментировать
RazoR_Empire
@RazoR_Empire
В jQuery есть event resize

Пример:

$(window).resize(function() {
  $('#log').append('<div>Handler for .resize() called.</div>');
});
Ответ написан
jQuery: .resize( [ eventData ], handler(eventObject) )
Есть подвох:
Code in a resize handler should never rely on the number of times the handler is called. Depending on implementation, resize events can be sent continuously as the resizing is in progress (the typical behavior in Internet Explorer and WebKit-based browsers such as Safari and Chrome), or only once at the end of the resize operation (the typical behavior in Firefox).

По-русски: хэндлер может вызываться либо один раз, либо непрерывно в процессе изменения размеров элемента — зависит от браузера.
Ответ написан
Комментировать
taliban
@taliban
php программист
Не говорю за библиотеки, но на основные измененияможно подписаться, дальше только таймаут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы