Я хотел бы предложить усовершенствование предыдущего решения с отслеживанием изменений в ширину окна. Вместо сохранения собственного массива прослушивателей событий вы можете использовать существующую систему событий javascript и запускать собственное событие при изменении ширины и привязывать к нему обработчики событий.
$(window).bind('myZoomEvent', function() { ... });
function pollZoomFireEvent()
{
if ( ... width changed ... ) {
$(window).trigger('myZoomEvent');
}
}
Дроссель / debounce может помочь снизить скорость вызовов вашего обработчика.