2014-05-25 149 views
0

我知道这个问题已被问及已回答之前,我已经找到了答案,但我有一个问题,我需要一些后续信息,并作为我的代表是太低了,我不能评论相关答案来要求它!jQuery - 绑定键按功能

我正在使用sygmoral的答案this post,这应该是页面的第二个答案。我使用两个函数来操作图像滑块,一个向左滑动,一个向右滑动。当用鼠标点击屏幕上的按钮时,每个功能都可以正常运行,但是当使用sygmoral的按键功能时,只有其中一个左/右箭头键会正确触发功能...

按键功能代码像这样:

$(document).keydown(function(e){ 
     switch(e.which) { 
      case 37: 
      slideLeft(); 

      case 39: 
      slideRight(); 

      default: return;     
     } 
     e.preventDefault(); 
    }); 

case 39正常工作。情况37触发slideLeft()函数,并且图像向左滑动,然后立即滑回到右侧。如果我交换案件39和37,则会发生相反的情况。基本上,只有第二种情况才能正常工作。

任何人都可以给我一个建议,为什么这可能是?

回答

0

你缺少switch语句 的每个分支break;关键字,所以如果你按下左箭头,你将进入的情况下37 - slideLeft()进行处理,然后将代码的其余部分太(slideRight();return;

看到MDN switch文档。

这里是你需要的东西:

$(document).keydown(function(e){ 
    switch(e.which) { 
     case 37: 
      slideLeft(); 
      break; 
     case 39: 
      slideRight(); 
      break; // isn't needed in your case 
     default: 
      return;     
    } 
    e.preventDefault(); 
}); 
+0

完美,谢谢:)太简单了!显而易见,我从来没有使用过switch()吗? –

0

您调用函数后失踪的break;,在每种情况下...

例如,而不是

case 37: 
    slideLeft(); 

你应该有

case 37: 
    slideLeft(); 
    break; 

有关更多信息在JavaScript中切换语句,请参阅http://www.w3schools.com/js/js_switch.asp

+0

感谢的人,很好的答案。尽管你只是对这个帖子感兴趣! –

+0

不完全,我在10:46:26发布,而不是10:50:37。 – hakazvaka

+0

所以你是!对不起,我没有意识到你可以看到确切的时间。我只是假定列表中的第一个答案是较旧的答案。我很抱歉。 –