Подтвердить что ты не робот

Нечетная проблема с jQuery.removeClass() ничего не делает

У меня есть код, который добавляет классы к элементу, а затем пытается удалить их и добавить разные на 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);

И вот что говорит консоль:

enter image description here

Как вы можете видеть, добавление класса destroyed отлично работает, но вызов removeClass() внутри setTimeout кажется, ничего не делает, а затем .addClass(classes.blank + ' ui-draggable'); также работает нормально. Кроме того, если я передаю один класс в removeClass, он удалит этот один класс без проблем.

Если бы проблема контекста или currentTile была неправильным элементом, я бы подумал, что addClass тоже потерпит неудачу? Кто-нибудь знает, что здесь происходит?

Дополнительная информация: jQuery latest (v.1.9.0, я думаю), jQuery UI v 1.10.0, Chrome v.24.0.1312.56 m


Изменить. Проблема, по-видимому, напрямую связана с пользовательским интерфейсом jQuery, и ее можно увидеть в этой скрипке.


Изменить 2. Это было подтверждено как ошибка в jQuery и исправлена.

4b9b3361

Ответ 1

Попробуйте использовать .removeAttr('class'), а не .removeClass().

DEMO:

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

Надеюсь, что это поможет и дайте мне знать, если у вас есть какие-либо вопросы!