J’ai du code qui ajoute des classes à un élément, puis essaie de les supprimer et d’append des classes différentes 1 seconde plus tard. J’obtiens un comportement très étrange que je ne peux même pas reproduire dans un simple exemple jsfiddle .
Voici le code JavaScript pertinent que j’ai:
console.log('before destroyed: ' + currentTile.get(0).className); currentTile.addClass(classes.destroyed); console.log('after destroyed: ' + currentTile.get(0).className); setTimeout(function () { console.log('before blanking: ' + currentTile.get(0).className); currentTile.removeClass().addClass(classes.blank + ' ui-draggable'); console.log('after blanking: ' + currentTile.get(0).className); }, 2000);
Et voici ce que dit la console:
Comme vous pouvez le constater, l’ajout de la classe destroyed
fonctionne removeClass()
, mais l’appel à removeClass()
intérieur de setTimeout
semble ne rien faire, puis le .addClass(classes.blank + ' ui-draggable');
semble également fonctionner correctement. En outre, si je passe une seule classe à removeClass
cette classe sera removeClass
sans problème.
S’il s’agissait d’un problème de contexte ou de currentTile
étant le mauvais élément, je penserais que la addClass
échouera également. Quelqu’un a une idée de ce qui se passe ici?
Informations supplémentaires: jQuery latest (v.1.9.0 je pense), jQuery UI v 1.10.0, Chrome v.24.0.1312.56 m
Edit : le problème semble être directement lié à l’interface utilisateur de jQuery et peut être observé dans ce violon .
Edit 2 : cela a été confirmé comme un bogue dans jQuery et a été corrigé.
Essayez d’utiliser .removeAttr('class')
plutôt que .removeClass()
.
DEMO:
J’espère que cela aide et laissez-moi savoir si vous avez des questions!