要素にクラスを追加し、それらを削除して1秒後に別のクラスを追加しようとするコードがいくつかあります。単純な jsfiddleの例 では再現できない非常に奇妙な動作が発生しています。
これが私が持っている関連するJavaScriptコードです:
_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);
_
そして、これがコンソールが言っていることです:
ご覧のとおり、destroyed
クラスの追加は正常に機能しますが、setTimeout
内のremoveClass()
の呼び出しは何もしていないように見え、その後.addClass(classes.blank + ' ui-draggable');
も正常に機能しているようです。また、単一のクラスをremoveClass
に渡すと、問題なくその1つのクラスが削除されます。
コンテキストの問題であるか、currentTile
が間違った要素である場合、addClass
も失敗すると思いますか?誰かがここで何が起こっているのか分かりますか?
追加情報:jQuery最新(v.1.9.0だと思います)、jQuery UI v 1.10.0、Chrome v.24.0.1312.56 m
編集:問題はjQuery UIに直接関連しているようで、 このフィドル で発生していることがわかります。
編集2:これは jQueryのバグ として確認され、修正されました。
.removeAttr('class')
ではなく.removeClass()
を使用してみてください。
デモ:
これがお役に立てば幸いです。ご不明な点がありましたらお知らせください。