Jquery append生成的输入不返回任何值。

Jquery append生成的输入不返回任何值。,jquery,html,Jquery,Html,我有一个脚本,应该在加载时显示一个文本输入字段,带有一个按钮,允许用户在单击时创建另一个文本输入字段,我通过jQuery成功地做到了这一点,它的工作方式很有魅力。然而,.append命令生成的新输入似乎不像普通输入那样工作,我无法通过jQuery获取它们的值,检测更改。。。等等 下面是我试图解释的一个例子: HTML: Javascript: $(function(){ $("#new").click(function() { $("div").append("<inpu

我有一个脚本,应该在加载时显示一个文本输入字段,带有一个按钮,允许用户在单击时创建另一个文本输入字段,我通过jQuery成功地做到了这一点,它的工作方式很有魅力。然而,.append命令生成的新输入似乎不像普通输入那样工作,我无法通过jQuery获取它们的值,检测更改。。。等等

下面是我试图解释的一个例子:

HTML:



Javascript:

$(function(){
  $("#new").click(function() {
    $("div").append("<input type='text' name='' value=''>");
  });

$("input[type=text]").change(function() {
  alert("Input changed");
 });
});
$(函数(){
$(“#新建”)。单击(函数(){
$(“div”)。追加(“”);
});
$(“输入[type=text]”)。更改(函数(){
警报(“输入已更改”);
});
});
小提琴:

如您所见,如果您在第一次输入中键入任何内容,它将提示“输入更改消息”。
但是,如果您通过“new input”(新输入)按钮创建一个新输入,并在其中键入一些内容,它将不会检测到更改,并且不会发出任何警报

在本例中,处理程序仅绑定到DOM中执行时存在的元素

要侦听新创建的元素,请改用侦听doucment中存在的文本类型输入元素:

$(document).on('change', "input[type=text]", function() {
    alert("Input changed");
});

编辑:这是(而不是直接的)。

在本例中,处理程序仅绑定到DOM中执行点存在的元素

要侦听新创建的元素,请改用侦听doucment中存在的文本类型输入元素:

$(document).on('change', "input[type=text]", function() {
    alert("Input changed");
});


编辑:这是(而不是直接的)。

一旦将新元素附加到DOM,就必须再次将事件附加到它,如下所示:

$(function(){

    $("#new").click(function() {
        $("div").append("<input type='text' name='' value=''>").on("change", function() {alert("Input Changed!") });

    });

    $("input[type=text]").change(function() {
      alert("Input changed");
      });
});
$(函数(){
$(“#新建”)。单击(函数(){
$(“div”).append(“”.on(“change”,function(){alert(“Input Changed!”)});
});
$(“输入[type=text]”)。更改(函数(){
警报(“输入已更改”);
});
});

有更简洁的方法可以实现这一点,比如分离函数和附加函数本身,但想法是一样的。

一旦将新元素附加到DOM,就必须再次将事件附加到它,如下所示:

$(function(){

    $("#new").click(function() {
        $("div").append("<input type='text' name='' value=''>").on("change", function() {alert("Input Changed!") });

    });

    $("input[type=text]").change(function() {
      alert("Input changed");
      });
});
$(函数(){
$(“#新建”)。单击(函数(){
$(“div”).append(“”.on(“change”,function(){alert(“Input Changed!”)});
});
$(“输入[type=text]”)。更改(函数(){
警报(“输入已更改”);
});
});

有更干净的方法,比如分离函数和附加函数本身,但想法是一样的。

+1代表委派。这是思考当前和未来元素的正确方式。非常感谢您,好先生,我相信这正是我所寻找的+1代表团。这是思考当前和未来元素的正确方式。非常感谢您,好先生,我相信这正是我所寻找的!请详细说明,我真的需要一个合适的方法,因为使用你上面描述的方法会非常混乱,因为脚本有很多计算和输入,我上面使用的只是一个例子。上面的答案是更优雅的方法,看起来你接受了他的答案。我只是想得到一个十字,每当你向DOM添加一个新元素时,你必须向它附加一个新的事件处理程序,否则它永远不会触发。上面的答案是,事件侦听器附加到文档中,这意味着它将始终侦听DOM上的更改。请详细说明,我确实需要一种适当的方法,因为使用您上面描述的方法将非常混乱,因为脚本有大量计算和输入,我上面使用的只是一个例子。上面的答案是更优雅的方式,看起来你接受了他的答案。我只是想得到一个十字,每当你向DOM添加一个新元素时,你必须向它附加一个新的事件处理程序,否则它永远不会触发。在上面的回答中,事件侦听器被附加到文档,这意味着它将始终侦听DOM上的更改。