Во-первых, вы, кажется, добавляете и удаляете класс с именем 'visible', которого нет в вашей таблице стилей.
Далее, вы устанавливаете непрозрачность на 0 при скрытии, но это не заставляет элемент исчезать. Какой бы элемент ни находился сверху, он все равно будет тем, кто получает событие нажатия, даже если его непрозрачность равна 0.
Возьми эту строку кода ...
$('#featured_content .item:not(:first-child)').css({'opacity': 0, 'margin-top': -20});
и установите непрозрачность на .20 вместо нуля. Вы увидите проблему.
Вот решение:
Измените свой код на следующий:
$('#featured_content .item:not(:first-child)').css({'opacity': 0, display:'none', 'margin-top': -20});
$('#featured_content .item:not(#' + item_id + ')').animate({
marginTop: -20,
opacity: 0
}, 200, function(){$(this).css({display:'none'});});
$('#featured_content #' + item_id).css({display:'block',opacity:0})
.animate({
marginTop: 0,
opacity: 1
}, 200);
Кроме того, удалите addClass («видимый») и removeClass («видимый») везде, где он появляется.
Это первоначально установит отображение каждого элемента ползунка: нет (кроме, конечно, для первого). Затем при исчезновении элемента в конце анимации выполняется обратный вызов для установки отображения: нет.
При исчезновении В элементе вам нужно установить display: block перед анимацией и установить непрозрачность в 0, чтобы вы все равно получали эффект fadeIn.