2012-08-01 25 views
1

事件監聽器代碼:JS - 事件監聽器頁面重載後的工作只有一次

<script type="text/javascript"> 
    $(document).ready(function(){ 
     document.getElementById("pagenumber").addEventListener("keydown", function(e) { 
     var keyCode = e.keyCode || e.which; 

     if (keyCode === 13) { 
      Dajaxice.gallery.gallerypages(Dajax.process, {'p': document.getElementById('pagenumber').value }) 
     }}, false); 

    }); 
</script> 

問題是,當我按下輸入元素上,改變頁面數,然後按回車它只能在第一時間之後,頁面重新加載。

可能是我的問題?

+2

你怎麼沒有完全使用jquery這個句柄呢? – Huangism 2012-08-01 19:32:49

+0

什麼是Dajaxice?你怎麼知道事件監聽器不工作,而不是它調用的方法? – Bergi 2012-08-01 19:35:42

+0

我有一個輸入元素,當我編寫頁碼時,Dajaxice將執行ajax作業(Ajax for Django)。下一頁簡單地加載。但是,當我嘗試再次更改頁面時,它不再工作。 – moenad 2012-08-01 19:38:02

回答

0

不能說太多關於Dajaxice對象,但這似乎事件處理程序要容易得多:

$(document).ready(function(){ 
    $(document).on("keydown", "#pagenumber", function(e) { 
     if (e.which === 13) { 
      Dajaxice.gallery.gallerypages(Dajax.process, {'p': this.value }); 
     } 
    }); 
}); 

這是委託給文檔級別,因此,如果輸入元素被阿賈克斯所取代,它應該仍然有效?

+0

這樣做更簡單,代碼更少,更清潔,但它不起作用。這需要一個新版本的jQuery嗎? – moenad 2012-08-01 19:48:15

+0

更新jquery,它工作得很好:)謝謝。 – moenad 2012-08-01 20:11:02

0

$(document).ready();已過時。您應該使用$(document).on("ready", function());。 另外.on()將相同的功能應用於添加到具有相同類或ID的文檔的新元素。試試看,祝你好運!