Vous pouvez utiliser .resize()
pour obtenir chaque fois que la largeur / hauteur change réellement, comme ceci:
$(window).resize(function() {
//resize just happened, pixels changed
});
Vous pouvez voir une démonstration de travail ici , il prend les nouvelles valeurs de hauteur / largeur et les met à jour dans la page pour que vous puissiez les voir. Rappelez-vous que l'événement ne commence pas ou ne se termine pas vraiment , il "se produit" juste quand un redimensionnement se produit ... il n'y a rien à dire qu'un autre ne se produira pas.
Edit: Par commentaires, il semble que vous vouliez quelque chose comme un événement "on-end", la solution que vous avez trouvée le fait, à quelques exceptions près (vous ne pouvez pas faire la distinction entre une souris levée et une pause de manière cross-browser, la même chose pour une fin vs une pause ). Vous pouvez cependant créer cet événement, pour le rendre un peu plus propre, comme ceci:
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
this.resizeTO = setTimeout(function() {
$(this).trigger('resizeEnd');
}, 500);
});
Vous pourriez avoir ceci est un fichier de base quelque part, tout ce que vous voulez faire ... alors vous pouvez vous lier à ce nouvel resizeEnd
événement que vous déclenchez, comme ceci:
$(window).bind('resizeEnd', function() {
//do something, window hasn't changed size in 500ms
});
Vous pouvez voir une démonstration de travail de cette approche ici