Отключить срабатывание обработчика, когда анимация еще не закончена
Делаю карусель
$(document).ready(function() {
var i = 0;
$('li').css('position', 'absolute');
$('li').each(function() {
$(this).css('left', $(this).index() * 100 + 'px');
});
$(".left").mousedown(function() {
var cnt = $('li').length;
$('li').each(function() {
var pos = $(this).position();
isDown = 0;
if (pos.left >= 0)
$(this).css('left', pos.left - 100 + 'px');
else
$(this).css('left', (cnt - 2) * 100 + 'px');
console.log($(this).index() + ' ' + pos.left);
});
});
$(".right").mousedown(function() {
var cnt = $('li').length;
$('li').each(function() {
var pos = $(this).position();
if (pos.left >= ((cnt - 1) * 100))
$(this).css('left', 0 + 'px');
else
$(this).css('left', pos.left + 100 + 'px');
console.log(pos.left);
});
});
});
* {
box-sizing: border-box
}
ul {
list-style: none;
margin: 0;
padding: 0;
height: 100px;
width: 800px;
position: relative;
font-size: 0;
overflow: hidden;
background: red;
}
ul:after {
content: " ";
visibility: hidden;
display: block;
height: 0;
clear: both;
}
li {
border: 1px solid #000;
width: 100px;
height: 100px;
font-size: 16px;
transition: 0.3s;
float: left;
background: red;
font-size: 50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
</ul>
<button class="left">left</button>
<button class="right">right</button>
http://jsfiddle.net/IlyaSurmay/o272s6oe/
Как отключить срабатывание обработчика, если анимация еще не закончена?
Источник: Stack Overflow на русском