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

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

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

动态表来自$ .each循环,但div结构完全相同(并且div id是唯一的)。在这两种情况下,结果表单元格都是...

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


键控功能完全相同....

$(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函数运行?

最佳答案

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

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

关于javascript - 在contenteditable div中触发所有keydown/up事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11599009/

10-12 12:46