Так что я не уверен, что это именно то, что вы ищете, но я написал быстрое решение, которое, надеюсь, поможет вам добраться до вашего решения:
HTML
<div id="slide" class="cycle">
<ul>
<li>
<a id="a1">
<img src="image" />
</a>
</li>
<li>
<a id="a2">
<img src="image" />
</a>
</li>
<li>
<a id="a3">
<img src="image" />
</a>
</li>
<li>
<a id="a4">
<img src="image" />
</a>
</li>
</ul>
</div>
JQuery
var lastBlock = $("#a1");
var maxWidth = 166;
var minWidth = 35;
var counter = 0;
var myInterval = 0;
$("#slide ul li a").mouseenter(
function() {
$(lastBlock).animate({
width: minWidth + "px"
}, {
queue: false,
duration: 400
});
$(this).animate({
width: maxWidth + "px"
}, {
queue: false,
duration: 400
});
lastBlock = this;
clearInterval(myInterval);
}).mouseleave(function() {
myInterval = setInterval(doSomething, 4000);
});
function doSomething() {
var i = counter++ % 4 + 1;
$("#a" + i).trigger("mouseenter");
$("#a" + i).trigger("mouseleave");
}
myInterval = setInterval(doSomething, 4000);
Таким образом, в этом решении установлен интервал для циклического прохождения и запуска событий mouseenter()
и mouseleave()
. Так как вы не хотите, чтобы изображения циклически повторялись, когда ваша мышь находится над элементом, интервал очищается на mouseenter()
и устанавливается снова во время mouseleave()
. Запутанная часть, которая может быть подвергнута рефакторингу, - это способ циклического перемещения по изображениям с использованием счетчика с операцией модуля. Обратите внимание, что я добавил идентификатор для каждого <a>
с постепенным изменением числа в конце.
Посмотрите, как это работает: http://jsfiddle.net/Ck3aZ/