2012-08-24 38 views
4

这里就是我定义我认为事件:jQuery Mobile的+骨干龙头事件触发两次

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

非常感谢!

回答

5

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

+1

我不工作的情况下传播 –

0

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

Btw。当您的脚本在运行时被解雇,以确保脚本在运行时无法被解雇时,这是个好主意。如果有人因为不耐烦而选中它两次会怎么样?

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