【问题标题】:jQuery Mobile + Backbone tap event fires twicejQuery Mobile + Backbone 点击事件触发两次
【发布时间】:2012-08-20 06:17:06
【问题描述】:

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

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

非常感谢!

【问题讨论】:

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


    【解决方案1】:

    为什么不使用“touchend”事件?

    顺便说一句。当您的脚本在运行时被触发时失败,这是一个好主意,以确保它在运行时不会被触发。如果有人因为不耐烦而点击了两次怎么办?

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-10
        • 1970-01-01
        相关资源
        最近更新 更多