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

时间:2018-06-07 01:48:08

标签: javascript mobile-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似乎不起作用,因为闪烁的动画不会停止。

1 个答案:

答案 0 :(得分:0)

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

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