È possibile utilizzare .resize()per ottenere ogni volta che la larghezza / altezza effettivamente cambia, in questo modo:
$(window).resize(function() {
//resize just happened, pixels changed
});
Puoi visualizzare una demo funzionante qui , prende i nuovi valori di altezza / larghezza e li aggiorna nella pagina per farti vedere. Ricorda che l'evento non inizia o finisce davvero , ma "succede" quando si verifica un ridimensionamento ... non c'è nulla da dire che non accadrà un altro.
Modifica: dai commenti sembra che tu voglia qualcosa di simile a un evento "end-end", la soluzione che hai trovato fa questo, con alcune eccezioni (non puoi distinguere tra un mouse-up e una pausa in un modo cross-browser, lo stesso per una fine contro una pausa ). Puoi creare quell'evento, per renderlo un po 'più pulito, in questo modo:
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
this.resizeTO = setTimeout(function() {
$(this).trigger('resizeEnd');
}, 500);
});
Potresti avere questo file di base da qualche parte, qualunque cosa tu voglia fare ... quindi puoi associare a quel nuovo resizeEndevento che stai attivando, in questo modo:
$(window).bind('resizeEnd', function() {
//do something, window hasn't changed size in 500ms
});
Potete vedere una demo funzionante di questo approccio qui