Я закодировал простой слайдер кнопки «Назад-Далее», используя JQuery. Следующая кнопка работает правильно, но когда мы нажимаем кнопку «Prev» быстро, умножаем число раз, чем оно. Не дожидаясь завершения анимации и начала показывать белый пространство ...Улучшение кода слайдера JQuery
Скрипки: - https://jsfiddle.net/pnjcr6sw/
Код: -
Css
<style>
*{ margin:0; padding:0; box-sizing:border-box;}
.slider { width:320px; overflow:hidden; margin:50px 0 0 50px; max-width:100%;}
.slider ul { float:left;}
.slider li { float:left; list-style:none;}
.pager{ float:left; margin:5px;}
.pager span { width:15px; height:15px;background:#000; border-radius:50%; display:inline-block; margin:0 5px; cursor:pointer; color:#fff;}
.pager span.active { background-color:#f00;}
</style>
HTML
<div class="slider">
<ul>
<li title="First"><img src="story1.jpg" alt=""></li>
<li title="Second"><img src="story2.jpg" alt=""></li>
<li title="Last"><img src="story3.jpg" alt=""></li>
</ul>
<a href="#" class="prev">prev</a>
<a href="#" class="next">next</a>
</div>
JS
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>
$(document).ready(function() {
var slider_w = $('.slider').width();
var total_li = $('.slider li').length
var total_w = $('.slider').width()*total_li
$('.slider ul').width(total_w);
// counter
// next button
$('a.next').click(function(){
$('.slider ul').animate({marginLeft:'-' + slider_w }, function(){
$('.slider li:first').appendTo('.slider ul');
$('.slider ul').css('margin-left','0');
});
});
//prev button
$('a.prev').click(function(){
$('.slider li:last').prependTo('.slider ul')
$('.slider ul').css('margin-left','-=' + slider_w)
$('.slider ul').animate({marginLeft:'+=' + slider_w})
});
});
</script>
Как и два ответа: https://jsfiddle.net/pnjcr6sw/6/ Вопрос в том, хотите ли вы заблокировать анимацию, если пользователь нажимает быстро несколько раз или следует ли пропускать изображения между ... – hffmr
@Johannes Я хочу, чтобы он работал как следующая кнопка ... –
Вы действительно этого хотите? Потому что, если вы нажмете 100 раз, вам придется подождать, пока анимация не остановится ... Поэтому я бы посоветовал вам заблокировать это на обеих кнопках. Ошибка или функция? ;) – hffmr