2011-11-17 59 views
3

这是我的网站:http://mttdn.com/dev/如何在.keypress();中的两个函数之间切换?

如果您点击右上角的电灯开关按钮,您会看到隐藏的div从右侧滑入。再次单击该按钮,然后滑回。我希望能够在按下'P'键时使相同的动作发生。我可以设置.keypress();你可以看到如果你点击'P',但是,你也会看到,使用与.click()相同的代码,div滑入,然后马上滑出去。我想弄清楚如何使用.toggle();结合.keypress();所以这不会发生。

这里是我的代码:

$(document).ready(function(){ 
    var previewopen = $(".codepreview"); 

    $(document).keypress(function(event){ 
     if (event.which == 112){ 
      previewopen.animate({left:"-=50%",},'normal'); 
      previewopen.animate({left:"+=50%",},'normal'); 
     } 
    }); 
}); 

我只是希望能够点击“P”,有DIV滑出,停止,然后再次单击“P”有它向后滑动。什么是完成这个最好的方法?任何帮助是极大的赞赏!谢谢!

+0

那么有没有办法做到这一点,而没有@lonesomeday提供的'解决方法'?我很感兴趣 –

回答

2

点击事件似乎工作正常。为什么不在按键上触发它? 类似的东西:

$(document).ready(function(){ 
    $(document).keypress(function(event){ 
     if (event.which == 112){ 
      $('.lightswitch').trigger('click'); 
     } 
    }); 
}); 
2

只需使用一个布尔开关:

(function() { 
    var on = false; 

    $(document).keypress(function(event) { 
     if (event.which == 112) { 
      previewopen.animate({left: on ? '-=50%' : '+=50%'}, 'normal'); 
      on = !on; 
     } 
    }); 
})(); 

我已删除的对象字面后,,这会在某些浏览器出现问题了(我会让你猜猜哪个......),并且我使用了匿名函数来保持on本地。