Я установил здесь jsFiddle. Но ниже код...
HTML
<div class="square square0"></div>
<div class="square square1"></div>
<div class="square square2"></div>
<div class="square square3"></div>
JavaScript
$('.square').click(function () {
if ($(this).hasClass('square0')) {
$(this).removeClass('square0').addClass('square1');
return false;
}
if ($(this).hasClass('square1')) {
$(this).removeClass('square1').addClass('square2');
return false;
}
if ($(this).hasClass('square2')) {
$(this).removeClass('square2').addClass('square3');
return false;
}
if ($(this).hasClass('square3')) {
$(this).removeClass('square3').addClass('square0');
return false;
}
});
CSS
.square { display: block; height: 100px; width: 100px; }
.square0{ background-color: #000; }
.square1{ background-color: #F00; }
.square2{ background-color: #0F0; }
.square3{ background-color: #00F; }
То, как настроена скрипка в настоящее время, в основном то, что я хочу. Пользователь щелкает цвета, и он переключается между черным, красным, зеленым, синим и снова возвращается к черному. Однако есть нюанс!
Представьте, что черный цвет является значением по умолчанию/пустым, а цвета (красный, зеленый и синий) являются различными вариантами. Если значение уже имеет цвет, когда пользователь щелкает его, оно снова становится черным. Если он черный, когда пользователь щелкает по нему, он циклически переключает цвета.
Вот в чем загвоздка...
С того момента, как они нажимают черный (и он становится красным), запускается таймер на 2 секунды. Если пользователь не нажмет в течение 2 секунд, то в следующий раз, когда он нажмет, он станет черным (значение по умолчанию/пустое). Но каждый раз, когда они продолжают нажимать, чтобы переключаться между цветами (включая возвращение к черному), этот таймер снова сбрасывается на 2 секунды.
Наконец, если вы щелкнете по черному блоку, чтобы он стал красным, а затем по другому блоку, а затем вернетесь к предыдущему, он станет черным (а не циклическим) именно потому, что вы щелкнули вдали от предыдущего блока, который получает избавиться от таймера.
Я знаю, что это много, но я чувствую, что кое-что, с такой простой концепцией, не должно быть t̲o̲o̲ h̲a̲r̲d̲ понять, но по какой-то причине я просто не могу обернуть мой разум вокруг него. Наверное, это глупо просто.
Помоги мне Оби Ван Stackoverflow (я?) ... ты моя единственная надежда!