我使用setInterval
和mousedown
事件来连续动画像滑块一样的div。
我还将变量设置为setInterval
,以便我可以停止mouseup
上的动画。
除了在iOS上,如果我在setInterval
函数中移除mousedown
前面的变量(int00)和运算符,它只会为div设置动画,这样可以正常工作:
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'});
}
有什么想法吗?
更新
在mousedown函数中将int00声明为局部变量可以在iOS上运行,但是我无法停止动画...
$('#scroll_diseases_left').mousedown(function(){
var int00 = setInterval(function() { scroll_diseases_left(); }, 250);
});
$('#scroll_diseases_left').mouseup(function(){
clearInterval(int00);
});
答案 0 :(得分:3)
问题是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;
});
答案 1 :(得分:1)
问题是你需要一些逻辑来测试在重置之前是否设置了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;
});
答案 2 :(得分:0)
这里只是一个猜测,但也许iOS不喜欢自动全局。
尝试在其他代码之前放置var int00;
来声明变量。无论如何,这是很好的做法。