2013-05-15 16 views
0

我在主頁上使用jQuery並在窗口加載時添加了一個keylistener。它看起來像這樣:爲什麼我的按鍵處理程序在我使用錨點時不起作用

$(window).load(function(){ 
    var debug = $('#debug'); // this is a fixed div I use to print debug 
          // information to the screen 
    $(window).keypress(function(event) { 
     var keyCode = event.keyCode ? event.keyCode : event.which; 
     debug.text(keyCode); 
     if (keyCode == 106 || keyCode == 40) 
      nextCard(); 
     else if (keyCode == 38 || keyCode == 107) 
      prevCard(); 
    }); 
}); 

您可以從一個卡跳轉到另一個使用箭頭向上和向下箭頭鍵或「J」和「K」。只要頁面被加載而沒有跳轉到錨點,它就可以正常工作。這意味着當我去像http://www.blah.com這樣的頁面時,它工作正常,但是當我像這樣加載它時,它不再起作用。

更新: $(window).load()被觸發,所以這不是問題。

你有什麼想法可能是什麼問題?謝謝!

+0

究竟它是如何不工作?它根本不起作用,或者功能不正確。如果不正確,以什麼方式? –

+0

我的猜測是keypress事件實際上工作得很好,但是'nextCard'和'prevCard'在某些方面行爲不當。在按鍵處理程序的第一行放置一個斷點,將頁面加載到一個錨點,然後按下一個鍵。怎麼了? –

+0

按鍵根本不起作用。我已經更新了上面的代碼,以便您現在可以看到「調試」是什麼。當我按下某個鍵時,鍵碼不會被添加到調試格中。因此該函數根本不會被調用。 – mvieghofer

回答

0

我發現了這個問題。它實際上與按鍵處理程序無關。這是一個處理程序,當某人在URL中使用散列輸入頁面時會啓動滾動動畫。

不過感謝你使我想起我的代碼:P下次我儘量考慮這樣的錯誤之前我張貼在這裏....

0

如果你不能找到一個簡單的解決方案,你可以嘗試重新綁定你的函數,每次散列改變時。例如用這個插件http://benalman.com/projects/jquery-hashchange-plugin/

+0

我試過插件,但它似乎不工作與jquery 1.9.1 – mvieghofer

+0

如果它doesn與jquery 1.9.1的工作,你應該嘗試也加載jQuery的遷移插件。看到j​​query網站。 – Andi

+0

確定thx的提示 – mvieghofer

相關問題