Problème étrange avec jQuery .removeClass () ne rien faire

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:

entrez la description de l'image ici

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:

http://jsfiddle.net/MvvmJ/8/

J’espère que cela aide et laissez-moi savoir si vous avez des questions!