Вот другая реализация, которая работает в вашем jsFiddle: http://jsfiddle.net/jfriend00/b7A4a/. Эта также гарантирует, что случайно сгенерированное имя класса отличается от предыдущего, поэтому цвет фактически меняется каждые 400 мс, а не пропускает изменение 1из 10 раз, потому что он генерирует то же значение цвета, что и у него.
// get unique random class that's different than what is currently being used
function getRandomClass(prior) {
var r;
do {
r = "class" + (Math.floor(Math.random() * 10) + 1);
} while (prior && prior.match(new RegExp("\\b" + r + "\\b")));
return(r);
}
// initialize the current class
$(".element").addClass(getRandomClass());
// upon hover, start the timer, when leaving stop the timer
$(".element").hover(function() {
var self = this;
if (this.intervalTimer) {
clearInterval(this.intervalTimer);
this.intervalTimer = null;
}
this.intervalTimer = setInterval(function() {
var c = self.className;
self.className = c.replace(/\bclass\d+\b/, getRandomClass(c));
}, 400);
}, function() {
clearInterval(this.intervalTimer);
this.intervalTimer = null;
});