12

我有一些代码向元素添加类,然后尝试删除它们并在 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类工作正常,但对removeClass()内部的调用setTimeout似乎什么也没做,然后.addClass(classes.blank + ' ui-draggable');似乎也工作正常。此外,如果我将一个类传递给removeClass它,它会毫无问题地删除该类。

如果这是一个上下文问题或者currentTile是错误的元素,我认为它addClass也会失败?有人知道这里发生了什么吗?

附加信息:jQuery 最新版(我认为是 v.1.9.0)、jQuery UI v 1.10.0、Chrome v.24.0.1312.56 m


编辑:这个问题似乎与 jQuery UI 直接相关,并且可以在这个 fiddle中看到。


编辑 2:这已被确认为jQuery 中的错误,并已修复。

4

1 回答 1

11

尝试使用.removeAttr('class')而不是.removeClass().

演示:

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

希望这会有所帮助,如果您有任何问题,请告诉我!

于 2013-01-26T02:02:38.050 回答