J'essaie d'ajouter un délai entre les appels jQuery .RemoVeclass lors de l'itération à travers les cellules d'une table. Les cellules s'affichent correctement sans settimeout, mais avec des pauses de code. Qu'est-ce que je fais mal?
4 Réponses :
première chose d'abord, évitez d'utiliser une chaîne pour le premier argument de Settimeout code>, utilisez une fonction anon, car il est plus facile de déboguer et de maintenir:
$("td").each(function() {
var $this = $(this);
var t=setTimeout(function(index) {
$this.removeClass("invisible")
}, 500 * (index+1));
});
Votre Ce code> est signalé sur la fenêtre globale
code>.
function reveal_board() {
$("td").each(function() {
$this = $(this);
var t=setTimeout(function(){$this.removeClass("invisible");}, 500);
});
}
Essayez ceci:
function reveal_board() { $("div").each(function(index) { var that = this; var t = setTimeout(function() { $(that).removeClass("invisible"); }, 500 * index); }); }
SRY Pour le Modifier, j'ai accidentellement évanoui et j'ai dû éditer afin que je puisse uppoter à nouveau.
Eh bien, j'ai eu le même problème et j'ai résolu de cette façon ... mais je n'ai aucune idée des performances ou de quoi que ce soit, je l'ai utilisé dans une boucle très courte (10 éléments max) et cela fonctionnait parfaitement. .. Au fait, je l'ai utilisé pour ajouter une classe, donc je vous laisserai comprendre ce qu'il donne pour supprimer une classe;).
var elements = $(".elements"); var timeout; elements.each(function(e){ timeout = setTimeout(function(index) { elements[elements.length-e-1].setAttribute('class', elements[elements.length-e-1].getAttribute('class')+' MY-NEW-CLASS'); }, 500 * e); });