.delay () et .setTimeout ()
Selon jQuery document sur .delay()
,
L' .delay() la méthode est la meilleure pour le retard entre en file d'attente jQuery
des effets. Parce qu'il est limité—il n'a pas, par exemple, offre un moyen d'
annuler le retard.delay() n'est pas un remplacement pour le JavaScript natif de l'
setTimeout fonction, qui pourrait être plus approprié pour certains types d'utilisation
cas.
Quelqu'un pourrait-il nous expliquer en quoi? Quand est-il plus approprié d'utiliser .delay()
et quand est-il préférable d'utiliser .setTimeout()
?
source d'informationauteur Randomblue
Vous devez vous connecter pour publier un commentaire.
Je pense que ce que vous avez posté l'explique lui-même vraiment.
Utilisation
.delay()
pour les effets jQuery, y compris les animations.setTimeout()
est préférable de l'utiliser pour tout le reste. Par exemple, lorsque vous avez besoin de déclencher un événement à un certain temps écoulé.Comme je le comprends,
.delay()
est conçu spécifiquement pour l'ajout d'un décalage entre les méthodes dans un jQuery file d'attente. Par exemple, si vous vouliez fondu une image dans l'affichage pendant toute la durée de 1 seconde, visible pendant 5 secondes, puis passer une seconde de plus pour fanent hors de vue, encore une fois, vous pouvez effectuer les opérations suivantes:Dans ce cas,
.delay()
est plus intuitif à utiliser car il est spécifiquement conçu pour retarder événements dans un jQuery file d'attente.setImeout()
d'autre part, est un natif méthode JavaScript qui n'est pas prévu explicitement par une file d'attente en ligne. Si vous voulais une boîte d'alerte de pop-up de 1 seconde après avoir cliqué sur un bouton, vous pouvez effectuer les opérations suivantes:.delay()
est principalement utilisé pour enchaîner des effets d'animation, avec des pauses entre les deux.Que les docs mentionner, il n'y a aucun moyen d'annuler le retard. Dans le cas où vous souhaitez annuler le retard, un
setTimeout()
devrait être utilisé à la place de sorte que vous pouvez l'annuler avecclearTimeout()
Vous pouvez utiliser
delay
avec des animations, par exemple:Vous pouvez également utiliser
timeOut
de retarder le départ d'animations, par exemple:Comme vous le voyez, c'est plus facile à utiliser
delay
quesetTimeout
avec des animations.Vous pouvez retarder beaucoup de choses avec
setTimeout
mais vous ne pouvez retarder les animations avecdelay
. Des méthodes qui ne sont pas les animations ne sont pas affectés pardelay
et ne serait donc pas attendre un certain temps avant de cacher l'élément, il serait cacher immédiatement:Un autre effet secondaire de retard (les): il semble pour désactiver la possibilité de cacher ou de fadeOut, etc) l'objection être retardée, jusqu'à ce que le retard est de plus de.
Par exemple, j'ai mis le code suivant (peut-être un stackoverflow développeur de reconnaître les noms css....) pour masquer un 'div':
Cliquant sur le "x", c'est dans la durée (c'est dans le 'div') avez-feu désactiver la fonction de clic (j'ai testé avec une alerte de là), mais la div n'a pas slideUp comme dirigé. Cependant, Si je remplacer la dernière ligne par:
..puis il a fait un travail - quand j'ai cliqué sur le "x", la div entourant slideUp et et de loin. Il me semble que si l'exécution en arrière-plan de la "delay ()" $messageDiv "verrouillé" de l'objet, de sorte qu'un mécanisme distinct d'essayer de fermer, il ne pouvait pas le faire jusqu'à ce que le retard a été fait.