Você pode usar .resize()
para obter sempre que a largura / altura realmente mudar, assim:
$(window).resize(function() {
//resize just happened, pixels changed
});
Você pode ver uma demonstração funcional aqui , ela pega os novos valores de altura / largura e os atualiza na página para você ver. Lembre-se de que o evento realmente não começa ou termina , apenas "acontece" quando ocorre um redimensionamento ... não há nada a dizer que outro não acontecerá.
Editar: pelos comentários, parece que você deseja algo como um evento "on-end", a solução que você encontrou faz isso, com algumas exceções (você não pode distinguir entre um mouse para cima e uma pausa de uma maneira entre navegadores, o mesmo para um final versus uma pausa ). Você pode criar esse evento para torná-lo um pouco mais limpo, assim:
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
this.resizeTO = setTimeout(function() {
$(this).trigger('resizeEnd');
}, 500);
});
Você pode ter este arquivo base em algum lugar, o que você quiser fazer ... então você pode vincular ao novo resizeEnd
evento que está desencadeando, assim:
$(window).bind('resizeEnd', function() {
//do something, window hasn't changed size in 500ms
});
Você pode ver uma demonstração de trabalho desta abordagem aqui