jQuery Mobile + Backbone tap事件触发两次

时间:2012-08-24 16:47:45

标签: jquery jquery-mobile backbone.js touch-event

这是我在视图中定义事件的地方:

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上发生的事情是点击事件触发两次,同时启动和停止进度条。任何想法为什么会发生这种情况以及如何解决它?注意:我已尝试使用tap交换vclick

非常感谢!

2 个答案:

答案 0 :(得分:5)

我最终使用了停止事件传播 e.stopPropagation()e.preventDefault()

答案 1 :(得分:0)

为什么不使用“touchend”活动?

顺便说一下。当你的脚本在运行时被解雇时失败是个好主意,以确保在运行时无法触发它。如果因为不耐烦而有人选中了两次该怎么办?

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