在Jquery上复制文本字段

在Jquery上复制文本字段,jquery,Jquery,我试图在用户每次按enter键时在页面上插入一个新的文本字段 我的代码 $(":text").on("keypress", function(e) { if (e.keyCode == '13') { e.preventDefault() $(this).after("<p><input type='text' class='textfield' maxlength='10' value=''/> <span></span

我试图在用户每次按enter键时在页面上插入一个新的文本字段

我的代码

   $(":text").on("keypress", function(e) {
if (e.keyCode == '13') {
    e.preventDefault()
    $(this).after("<p><input type='text' class='textfield' maxlength='10' value=''/>      <span></span> </p>")
}

    });
当我在原始文本字段上按enter键时,会出现一个新的文本字段,但新的文本字段不会对任何按下做出反应。我假设on函数类似于live,这应该可以解决此类问题。怎么了?

您需要为新添加的元素执行事件委派

通过使用on函数

例:


请参考下面的代码

        $(".textfield").live("keypress", function (e) {
        if (e.keyCode == '13') {
            e.preventDefault();
            $(this).after("<p><input type='text' class='textfield' maxlength='10' value=''/>      <span></span> </p>")
        }

    });

您可以将事件委托给精确的元素。这意味着新创建的元素处于冷态。您需要将bind keypress绑定到外部容器并将其约束到文本字段。您能解释一下downvote的原因吗?在jquery的1.7版本中引入了On。Live已从1.7中弃用。因此,您可能正在使用早于1.7版本的jquery。
        $(".textfield").live("keypress", function (e) {
        if (e.keyCode == '13') {
            e.preventDefault();
            $(this).after("<p><input type='text' class='textfield' maxlength='10' value=''/>      <span></span> </p>")
        }

    });