setTimeout 在移动 Safari 上无法间歇性工作?


$('.btn-activate').on('click touchstart', function() {
$('.discount').each(function() {
var $this = $(this);
$({ countNum: parseInt($this.html())}).animate({
countNum: couponPercentage
},
{
duration: 1000,
easing:'linear',
step: function() {
$this.html(Math.floor(this.countNum) + '% OFF');
},
complete: function() {
$this.html(Math.floor(this.countNum) + '% OFF');
refreshIntervalId = setInterval(function() {
if ($this.css('visibility') == 'hidden') {
$this.css('visibility', 'visible');
} else {
$this.css('visibility', 'hidden');
}
}, 200);
setTimeout(function(){
clearInterval(refreshIntervalId);
if ($this.css('visibility') == 'hidden') {
$this.css('visibility', 'visible');
}
}, 2000);
}
});
});
})

complete块中,尝试实现闪烁动画。这有效,但在 Safari Mobile 上,有时setTimeout似乎不起作用,因为闪烁的动画不会停止。

显然这与使用.on('click touchstart',...)有关。

当用户点击按钮时,会发生某种双重触发。删除冗余touchstart后,我无法再复制它。

最新更新