使用变量setInterval在iOS上不工作



我使用setIntervalmousedown事件来连续动画一些div,如滑块。

我还设置了一个变量为setInterval,这样我就可以停止mouseup上的动画。

这工作得很好,除了iOS,它只会动画div,如果我删除变量(int00)和操作符在mousedown函数的setInterval前面:

var int00;
$('#scroll_diseases_left').mousedown(function(){
    int00 = setInterval(function() { scroll_diseases_left(); }, 250);
});
$('#scroll_diseases_left').mouseup(function(){
    clearInterval(int00);
});
function scroll_diseases_left() {
    $('#scroll_diseases_right').fadeIn();
    $('#disease_wrapper').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
    $('#arthritis_content').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
    $('#bleeding_content').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
    $('#blood_vessel_content').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
    $('#brain_content').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
    $('#cancer_content').animate({marginLeft: '-=50px'}, {duration: 500, queue: false, easing: 'linear'});
}

任何想法?

将int00声明为mousedown函数中的局部变量在iOS上工作,但我无法停止动画…

$('#scroll_diseases_left').mousedown(function(){
    var int00 = setInterval(function() { scroll_diseases_left(); }, 250);
});
$('#scroll_diseases_left').mouseup(function(){
    clearInterval(int00);
});

问题是iOS上的触摸事件没有被拾取。如此:

  $('#scroll_diseases_left').bind('touchstart mousedown', function(){
   int00 = int00 || setInterval(function() { scroll_diseases_left(); }, 250);
  });
  $('#scroll_diseases_left').bind('touchend mouseup', function(){
      clearInterval(int00);
      int00 = undefined;
  });

问题是您需要一些逻辑来测试是否在重置int00之前设置它。

  var int00;
  $('#scroll_diseases_left').mousedown(function(){
   // if int00 is set, keep it, if it is not start a new interval.
   int00 = int00 || setInterval(function() { scroll_diseases_left(); }, 250);
  });
  $('#scroll_diseases_left').mouseup(function(){
      clearInterval(int00);
      int00 = undefined;
  });

这只是一个猜测,但也许iOS不喜欢自动全局变量。

尝试将var int00;放在其他代码之前来声明变量。

最新更新