Написал карусельку, подскажите - как лучше доработать код?
Ошибка появляется, если кликать очень быстро на 'prev' или 'next' - карусель "проезжает" наше else
$(document).ready(function() {
$('.slider ul').each(function() { // ширина каруселек
child = $(this).children('li');
$(this).width(child.length * (child.width() + parseInt(child.css('marginLeft'), 10) + parseInt(child.css('marginRight'), 10) ) );
$(this).after('<div class="next"></div>').before('<div class="prev"></div>')
});
slide=$('.slider ul li');
mLeft=parseInt(slide.css('marginLeft'), 10);
mRight=parseInt(slide.css('marginRight'), 10);
totWidth=mLeft+mRight+slide.width(); // Полная длинна одного слайда
$('.slider .next').click(function() { // Вправо
if ($(this).prev('ul').css('marginLeft') != -(totWidth)*(slide.length-1)+'px') {
$(this).prev('ul').stop(false, true).animate({
marginLeft: -(totWidth)+parseInt(slide.parent().css('marginLeft'), 10)
}, 300);
} else { // вперед не заезжаем
$(this).prev('ul').stop(false, true).animate({marginLeft: 0}, 300);
}
})
$('.slider .prev').click(function() { // Влево
if (parseInt($(this).next('ul').css('marginLeft'), 10) != '0') {
$(this).next('ul').stop(false, true).animate({
marginLeft: totWidth + parseInt(slide.parent().css('marginLeft'), 10)
} ,300)
} else { // назад не заезжаем
$(this).next('ul').stop(false, true).animate({marginLeft: -(totWidth)*(slide.length-1)}, 300)
}
});
});
Не критикуйте сильно, только начинаю писать на js.
Думал по поводу события dblclick() - задать ему return false, но ведь от "третьего быстрого клика" не избавит?