I need to do a slideshow, with the follow code:
<div id="galerry-one" class="gallery">
<div class="content">
<ul>
<li id="content-1"><img src="image1.jpg" /></li>
<li id="content-2"><img src="image2.jpg" /></li>
<li id="content-3"><iframe src="http://www.youtube.com/..."></iframe></li>
<li id="content-4"><img src="image3.jpg" /></li>
<li id="content-5"><iframe src="http://www.youtube.com/..."></iframe></li>
</ul>
</div>
<div class="thumbnails">
<span class="prev"> « </span>
<ul>
<li id="go-content-1"><img src="image1_thumbnai.jpg" /></li>
<li id="go-content-2"><img src="image2_thumbnai.jpg" /></li>
<li id="go-content-3"><img src="youtube1_thumbnai.jpg" /></li>
<li id="go-content-4"><img src="image3_thumbnai.jpg" /></li>
<li id="go-content-5"><img src="youtube2_thumbnai.jpg" /></li>
</ul>
<span class="next"> » </span>
</div>
</div>
Ok, when I click the a with go-content-1 id, all others slideshows hide and the 1 show, etc..
What I have started:
$(document).ready(function() {
$('.gallery').each(function(index, element) {
var id = $(this).attr('id');
var images = $('#' + id + ' .content li').index() -1;
$('#' + id + ' .prev').click(function(e) {
e.preventDefault();
if($('#' + id + ' .content .current').prev().length == 0 ) {
$('#' + id + ' .content .current').removeClass('current').hide();
$('#' + id + ' .content li:last').addClass('current').show();
} else {
$('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().prev().fadeIn(1000).addClass('current').show();
}
return false;
});
$('#' + id + ' .next').click(function(e) {
e.preventDefault();
if($('#' + id + ' .content .current').next().length == 0 ) {
$('#' + id + ' .content .current').removeClass('current').hide();
$('#' + id + ' .content li:first').addClass('current').show();
} else {
$('#' + id + ' .content .current').removeClass('current').fadeOut(1000).hide().next().fadeIn(1000).addClass('current').show();
}
return false;
});
$('#' + id + ' .thumbnails li').click(function(e) {
e.preventDefault();
$('#' + id + ' .content .current').removeClass('current').hide();
$('#' + id + ' .content .thumbnails').removeClass('current');
$('#' + id + ' .content li').eq($(this).index()).fadeIn(1000).addClass('current').show();
return false;
});
$('#' + id + ' .content li:first').addClass('current').show();
});
});
The problem now is show only 4 thumbnails every time.
Thanks!
Do not hardcode numbers in id’s. Use next and prev.
Also I suggest reading about delegate, it will increase performance in client-side and make code cleaner. Hint: use delegate instead of the second line of what you wrote.
Happy learning! 🙂