2011-11-17 78 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本地。