То, что вы сделали, это «активировали» кнопку для изображения, которое будет исчезать. Я полагаю, вы хотите активировать кнопку для изображения, которое будет показано дальше? Вместо следующего кода:
activ=$active.index();
...
$("#buttons img").eq(activ).attr('src','images/button_active.png');
Вы можете использовать этот код [обратите внимание, что вы должны объявить 'activ' как переменную, вы не хотите, чтобы она была глобальной]:
var next_active = $next.index(); //$active is changed to $next
...
$("#buttons img")
.eq(next_active)
.attr('src','images/button_active.png');
Я не на 100% уверен в вашей цели, но вы также можете сбросить неактивные кнопки на исходное изображение, и в этом случае вы будете использовать:
$("#buttons img")
.attr('src','images/button.png')
.eq(next_active)
.attr('src','images/button_active.png');
EDIT:
Хорошо, ваша основная проблема заключается в использовании функции delay (). Это только создаст задержку в цепочке, но код на следующей строке будет выполнен немедленно. Используйте setTimeout () здесь вместо delay (), потому что вы хотите отложить выполнение следующего вызова cycleImages ().
Вам также придется внести изменения, о которых я упоминал выше, в противном случае кнопка для только что исчезнувшего изображения будет активной. В целом, следующий код jQuery должен работать для вашей функции cycleImages:
function cycleImages(){
var $active = $('#portfolio_cycler .active');
var $next = ($active.next().length > 0) ? $active.next() : $('#portfolio_cycler img:first');
// Note the use of $active instead of using selectors again
var next_active = $next.index();
$next.css('z-index',2);
$("#buttons img").eq(next_active).attr('src','images/button_active.png');
$active.fadeOut(1500, function() {
$active.css('z-index',1).show().removeClass('active');
$next.addClass('active');
/* You can add the class active to $next immediately here.
The delay is instead needed before the function call below, hence
setTimeout is used. Also since you have set the z-index of an active
image to 3 in your css, setting it in the javascript is redundant */
setTimeout(cycleImages, 4000);
});
}