jsFiddle здесь: http://jsfiddle.net/qBQD4/
Это довольно просто на самом деле; Я хочу, чтобы стрелка вправо перемещала изображения вперед, а стрелка влево - в обратном направлении в виде простого слайд-шоу. У меня есть несколько слайд-шоу на странице, на которой будет реализован этот код, поэтому я пошел по пути .next (), а не просто указал уникальный идентификатор div. HTML-код:
<div class="media">
<div class="slideButtons">
<span class="prev"><</span>
<span class="next">/ ></span>
</div>
<ul class="gallery" id="olympGallery">
<li><img src="http://i.imgur.com/8aA7W.jpg" alt="" title="" /></li>
<li><img src="http://i.imgur.com/jE7vj.jpg" alt="" title="" /></li>
<li><img src="http://i.imgur.com/L7lVg.jpg" alt="" /></li>
</ul>
</div>
И код jQuery:
var speed = 100;
$(".prev").click(function() {
var now = $(this).next("ul.gallery").children(":visible"),
last = $(this).next("ul.gallery").children(":last"),
prev = now.prev();
prev = prev.index() == -1 ? last : prev;
now.fadeOut(speed, function() {prev.fadeIn(speed);});
});
$(".next").click(function() {
var now = $(this).next("ul.gallery").children(':visible'),
first = $(this).next("ul.gallery").children(':first'),
next = now.next();
next = next.index() == -1 ? first : next;
now.fadeOut(speed, function() {next.fadeIn(speed);});
});
$(".gallery li").click(function() {
var first = $(this).parent().children(':first'),
next = $(this).next();
next = next.index() == -1 ? first : next;
$(this).fadeOut(speed, function() {next.fadeIn(speed);});
});
И, наконец, немного CSS:
.prev, .next {position: relative; padding: 3px; font-size:50px; font-weight: 900; cursor:pointer;
}
.gallery li{display:none; list-style:none;}
.gallery li:first-child {display:block;}
.gallery img {
max-height:550px
}
3-я функция работает нормально (нажатие на изображение переходит к следующему в серии). Однако первые два полностью сломаны. Что я тут не так сделал?