@Worddoc
Frontend explorer

Почему не получается остановить интервал (jQuery)?

Здравствуйте. Делаю перетаскиваемую планку для расчета цен, но почему-то не получается остановить интервал, сможет кто-то помочь? Буду очень благодарен!

$(document).ready(function(){
    var interval = null;
    $('.pod').on('mousedown', function(e) {
    var dist = 0;
    var begin = 0;
    begin = e.pageX;

    var func = $(document).on('mousemove', function(ee) {
        return dist = ee.pageX - begin;
    })

    if ( interval != null ) clearInterval(interval);

    //Устанавливаем интервал
    interval = setInterval(function() {
      $('.pod').css('transform','translateX('+ dist + 'px' + ')')
      interval = null;
    },10)
  })

    //Очищаем интервал
    $(document).on('mouseup',function(){
      clearInterval(interval);
      interval = null;
    })
})


<div class="nad">
	<div class="pod"></div>
</div>


.nad {
  width: 200px;
  height: 3px;
  border: 1px solid #ccc;
  border-radius: 50px;
  margin-top: 100px;
  margin-left: 100px;
  position: relative;
}

.pod {
  width: 25px;
  height: 25px;
  box-shadow: 0 0 5px 0 black;
  border-radius: 50px;
  position: absolute;
  left: 0;
  top: -10px;
  z-index: 999;
  background: white;
}
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@Atllantis
Потому, что интервалов может создаваться много, а в переменной хранится только один (последний).

UPD:
Я обычно делаю так:
$(document).ready(function(){
    var interval = null;
    $('.pod').on('mousedown', function(e) {
    var dist = 0;
    var begin = 0;
    begin = e.pageX;
    if ( interval != null ) clearInterval(interval);
    interval = setInterval(function() {
      interval = null;
      $(document).on('mousemove', function(ee) {
        dist = ee.pageX - begin;
        $('.pod').css('transform','translateX('+ dist + 'px' + ')')
      })
    })
  })
    $('.pod').on('mouseup',function(){
      clearInterval(interval);
      interval = null;
    })

})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы