1

我的问题...我似乎无法触发所有 keydown 事件。

我正在使用 [enter] 和 [esc] keydown 事件来更新/刷新或退出/刷新某些 html 表中的数据

有静态表格单元格和动态表格单元格,根据用户搜索词输入填充

动态表来自 $.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 不会停止 [enter] 换行符,并且没有任何代码运行

唯一的区别是 divA 是静态的,而 divB 是在 javascript 中生成的。如何让 divB keydown 功能运行?

4

1 回答 1

3

由于某些 div 是动态的,因此您不能使用keydown 它们将事件绑定到它们。此方法只会在页面加载时绑定到现有的 div。

您需要的是使用jquery.on()jquery.live()(on 较新,因此如果您的 jquery 版本支持它,最好使用它)。

于 2012-07-22T09:21:53.533 回答