<div class="task-status task-active selected">Active</div>
<div class="task-status task-stop">Stop</div>
<div class="task-status task-done">Done</div>
// 1, и самое главное, не вызывайте по многу раз функции, это б** самое медленное место в JS.
// Вы сделали правильно, а вот предыдущий ответчик, увы.
// 2. Кложурка - наше все. ()()
;(function($){
// Выполнится, только после прогрузки страницы
$(function{
var $taskStatus = $('.task-status'); // Доллар как бы показывает, что это JQ объект
// 3. В HTML можно убрать selected, что-бы код смотрелся гармончнее
// Тогда следуте добавть
/*
$taskStatus.first().addClass('selected');
*/
$taskStatus.on('click', function(){
var $this = $(this);
// Зачем, что-то менять если это и так уже `selected`
if(!$this.hasClass('selected')){
var $other = $taskStatus.not( $this );
// Тем самымы, даже при малом FPS, не будет мерцания
$this.addClass('selected');
$other.removeClass('selected');
};
});
});
})(jQuery);
И как всегда, минутка рекламы CoffeeScript
do ($ = jQuery)->
$ ->
$taskStatus = $('.task-status')
$taskStatus.on 'click', ->
$this = $(this)
unless $this.hasClass('selected')
$other = $taskStatus.not( $this )
$this.addClass('selected')
$other.removeClass('selected')