4

ビューでイベントを定義する場所は次のとおりです。

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 で起こっているのは、タップ イベントが2 回発生し、プログレス バーの開始と停止が同時に行われることです。なぜこれが起こっているのか、それを修正する方法はありますか? 注:私はすでに と交換しようとtapしましvclickた。

どうもありがとう!

4

2 に答える 2

5

とを使用してイベントの伝播を停止することに e.stopPropagation() なり ましたe.preventDefault()

于 2012-10-12T19:24:40.907 に答える
0

「touchend」イベントを使用しないのはなぜですか?

ところで。スクリプトが実行中に起動されて失敗した場合、実行中にスクリプトが起動されないようにすることをお勧めします。誰かがせっかちでそれを 2 回タップしたらどうなるでしょうか。

状況によっては、これに jquery の関数 .one() を使用できます。ほとんどの場合、柔軟性が必要であり、単純な変数チェックで解決できます。

于 2012-09-01T21:24:08.347 に答える