jQuery Mobile+Backbone tap事件触发两次



以下是我在视图中定义事件的位置:

events : {
            "tap #exerciseProgressBarContainer" : 'progressBarClick'
        },

行动如下:

    progressBarClick : function() {
        // start?
        if(this.curWorkoutExercise.isTimed() && !this.curExerciseStartTime) {
            HTMLHelper.endGlow(this.$('#exerciseProgressBarContainer .progressBar.overlay'));
            this.startExerciseProgressTimer();
        }
        // done?
        else {
            this.stopExerciseProgressTimer();
            // save the log
            this.addCurExerciseLog();
            this.startBreak();
            this.nextAction();
        }
    },

基本上,在第一次点击时,用户启动进度计时器,启动后,另一次点击完成。在我的iPhone和Android上发生的情况是,点击事件触发两次,使进度条同时启动和停止。你知道为什么会发生这种情况以及如何解决吗?注意:我已经尝试过用vclick交换tap

非常感谢!

我最终使用e.stopPropagation()e.preventDefault()

为什么不使用"touchend"事件?

Btw。当脚本在运行时被激发时失败时,这是一个好主意,以确保它在运行时不会被激发。如果有人因为不耐烦而看了两次怎么办?

在某些情况下,可以使用jquery的函数.one()。在大多数情况下,您想要更大的灵活性,可以通过简单的变量检查来解决。

最新更新