12

クラスを要素に追加し、それらを削除して1秒後に別のクラスを追加しようとするコードがあります。単純なjsfiddle example では再現できない非常に奇妙な動作が発生しています。

私が持っている関連する 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クラスの追加は正常に機能しますが、 のremoveClass()内部への呼び出しはsetTimeout何もしていないように.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 のバグとして確認され、修正されました。

4

1 に答える 1

11

.removeAttr('class')ではなく使ってみてください.removeClass()

デモ:

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

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-01-26T02:02:38.050 に答える