Javascript 如何在添加新记录时附加代理

Javascript 如何在添加新记录时附加代理,javascript,delegates,Javascript,Delegates,我有一个表单,其中附加了OnChange方法,如 $(document).ready(function () { $('#fieldId').change(function () { ... } } 但当我从一个函数中添加一个Id为“fieldId”的新记录时,我就遇到了这种情况 function addTeamMember() { var newItem= "<input id='fieldId' type='text'>" $("#other").app

我有一个表单,其中附加了OnChange方法,如

$(document).ready(function () {
    $('#fieldId').change(function () {
    ...
   }
}
但当我从一个函数中添加一个Id为“fieldId”的新记录时,我就遇到了这种情况

function addTeamMember() {
var newItem= "<input  id='fieldId' type='text'>"
$("#other").append(newItem);
...
}
函数addTeamMember(){
var newItem=“”
$(“#其他”)。追加(新项目);
...
}
但当我更改新添加的字段时,不会触发更改。有人能帮我个主意吗


谢谢。

将onchange事件侦听器更改为:

$('body').on('change', '#fieldId', function () {
  // ...
}

您可以用任何包装动态添加的DOM元素的容器替换“body”。通过这种方式,您可以将事件委派给现有或不存在的元素。

将onchange事件侦听器更改为:

$('body').on('change', '#fieldId', function () {
  // ...
}

您可以用任何包装动态添加的DOM元素的容器替换“body”。通过这种方式,您可以将事件委派给现有或不存在的元素。

首先,不要对多个元素(即使动态创建)使用相同的
id
,也不要对多个元素(即使动态创建)使用相同的
id
更好的方法是尽可能地绑定到元素(通常是它们的容器元素),而不是绑定到
body
。太好了!谢谢由于我不知道他的DOM结构,我声明了“body”,并在下面声明,他所需要的只是DOM元素周围的一些容器。更好的方法是尽可能地绑定到元素(通常是它们的容器元素),而不是绑定到
body
。太棒了!谢谢因为我不知道他的DOM结构,所以我声明了“body”,并在下面声明,他所需要的只是DOM元素周围的一些容器