322 votes

jQuery - comment attendre le ' fin ' de ' redimensionner ' événement et alors seulement, effectuent une action ?

Donc j’utilise actuellement quelque chose comme :

Mais c’est appelée plusieurs fois alors que le processus de redimensionnement s’allume. Est-il possible d’intercepter un événement lorsqu’il se termine ?

617voto

Mark Coleman Points 24469

Vous pouvez utiliser et

Exemple de code sur jsfiddle.

201voto

Dolan Antenucci Points 3377

J’ai eu la chance avec la recommandation suivante : http://forum.jquery.com/topic/the-resizeend-event

Voici le code si vous n’avez pas à fouiller dans du son post lien & source :

Merci sime.vidas pour le code !

43voto

jessegavin Points 20854

Internet Exploerer fournit une resizeEnd événement. Les autres navigateurs vont déclencher l'événement resize à de nombreuses reprises pendant que vous êtes en cours de redimensionnement.

Il y a d'autres excellentes réponses ici qui montrent comment utiliser setTimeout et la .manette des gaz, .anti-rebond méthodes de lodash et le trait de soulignement, donc je vais parler de Ben Alman du papillon des gaz-anti-rebond plugin jQuery qui accomplit ce que vous êtes après.

Supposons que vous avez cette fonction que vous souhaitez déclencher après un redimensionnement:

function onResize() {
  console.log("Resize just happened!");
};

Papillon Exemple
Dans l'exemple suivant, onResize() ne sera appelée qu'une fois tous les 250 millisecondes pendant une fenêtre de redimensionnement.

$(window).resize( $.throttle( 250, onResize) );

Anti-Rebond Exemple
Dans l'exemple suivant, onResize() ne sera appelée qu'une fois à la fin d'un redimensionnement de la fenêtre d'action. Cela permet d'obtenir le même résultat que @Marque présente dans sa réponse.

$(window).resize( $.debounce( 250, onResize) );

28voto

Rifat Points 3394

Il y a une solution élégante en utilisant Underscore.js donc, si vous l’utilisez dans votre projet vous pouvez procéder comme suit -


Ceci devrait suffire  :) Mais, si vous êtes intéressé pour en savoir plus sur que vous pouvez consulter mon blog - http://rifatnabi.com/post/detect-end-of-jquery-resize-event-using-underscore-debounce

7voto

Xman Classical Points 605

Vous pouvez stocker un id de référence à n’importe quel setInterval ou setTimeout. Comme ça :

Pour ce faire sans une variable « globale », vous pouvez ajouter une variable locale à la fonction elle-même. Ex :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X