Если у вас есть три класса:
.unselected { background-color: grey; }
.selected { background-color: green; }
.clicked { background-color: red; }
Тогда вы можете использовать их следующим образом:
<div id="test" class="unselected">test<div>
Тогда (в document.ready или блоке скрипта после тестового элемента):
$("#test").click(function() {
var $this = $(this);
if ($this.hasClass("selected")) {
$this.removeClass("selected").addClass("clicked");
// ajax here if needed
} else if ($this.hasClass("clicked")) {
$this.removeClass("clicked").addClass("selected");
// ajax here if needed
} else if ($this.hasClass("unselected")) {
$this.removeClass("unselected").addClass("selected");
// ajax here if needed
}
});
Демо: http://jsfiddle.net/LLCMa/
Вышесказанное должно быть самоочевидным. Конечно, вы можете поместить свой Ajax-вызов вне структуры if / else, если это более уместно, но если вам нужно сделать разные Ajax-вызовы в зависимости от текущего состояния, сделайте, как указано выше.