2012-07-22 44 views
1

我的問題......我似乎無法解僱所有的keydown事件。發射所有keydown/up事件contenteditable div

我使用的是[進入]和[ESC] keydown事件更新/在某些HTML表格刷新或退出/更新數據

有靜態的表格單元和動態的表格單元格,填充基於用戶搜索-term input

動態表來自$ .each循環,但div結構完全相同(並且div id是唯一的)。在這兩種情況下所產生的表格單元格...

<td class="edit"><div contenteditable="true" id="XYZ">[value]</div></td> 

該keydown功能是完全一樣的....

$(document).ready(function() { 

    $("#divA").keydown(function (e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     // send data to server   
     // refresh stuff 
    } 
    if (e.keyCode == 27) { 
     // refresh stuff 
    }  
    }); 

    $("#divB").keydown(function (e) { 
    if (e.keyCode == 13) { 
     e.preventDefault(); 
     // send data to server 
     // refresh stuff   
    } 
    if (e.keyCode == 27) { 
     // refresh stuff 
    }  
    }); 

的獨立功能過帳日期到服務器是相同的。和PHP更新數據庫是一樣的。並且都有相同的mysql數據結構double, yes null, zero default。 divB與其中的數據一起存在,並且alert($("#divB").text());顯示將在ajax更新中使用的值。

,但我想都不是很重要,因爲我已經縮小問題在這裏...

在DIVA

,KEYDOWN停止[Enter]鍵換行,並運行代碼

在DIVB

,KEYDOWN不會停止[輸入]換行並且沒有代碼運行

唯一的區別是divA是靜態的,divB是在javascript中生成的。我怎樣才能讓divB keydown函數運行?

回答

3

由於一些div是動態的,因此不能使用​​將事件綁定到它們。這個方法只會在頁面加載時綁定到現有的div。

你需要的是使用jquery.on()jquery.live()(關於更新,所以如果你的jQuery版本支持它,最好使用它)。

+0

完美。非常感謝! – Ben 2012-07-22 09:38:29