我使用setInterval
与mousedown
事件来连续动画一些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;
放在其他代码之前来声明变量。