Javascript Jquery没有';t将listner添加到新添加的字段

Javascript Jquery没有';t将listner添加到新添加的字段,javascript,jquery,Javascript,Jquery,在我的页面中,我有一个添加按钮,用于将新字段添加到表中: $("#add").click(function () { var rowCount = $('#scale tr').length + 1; var newRow = '<tr id="row' + rowCount + '"><td>IP:</td><td> <input type="text" **class="ip"** id="ip' + r

在我的页面中,我有一个添加按钮,用于将新字段添加到表中:

$("#add").click(function () {
 var rowCount = $('#scale tr').length + 1;
 var newRow = '<tr id="row' + rowCount + '"><td>IP:</td><td> 
              <input type="text" **class="ip"** id="ip' + rowCount + '" name="ip' + rowCount + '"> </input></td><td>Name:</td><td>  <input type="text" id="n' + rowCount + '" name="n' + rowCount + '"> </input></td><td id="ip' + rowCount + 'ave"></td><td id="add"></td><td></td></tr>';
 console.log(newRow);
 $("#scale  tr:last").after(newRow);
});

每当我转到表的第一行(最初存在的那一行)时,这段代码都会提醒我,但是对于新行,它不起作用。我的想法是将所有侦听器封装在一个函数中,并在任何更改时运行该函数。然而,由于我的代码中有很多这样的内容,我想知道是否有更好/更简单的方法来执行该操作。

由于您的
输入已动态添加到页面中,因此此元素将无法使用所有事件,在这种情况下,您需要应用事件委派,以便将这些事件附加到此新添加的
输入
元素:

$("#scale  tr:last").on("focusout",".ip",function() {
     // Your code here
})

事件不会神奇地附加到新元素。由于处理程序是在创建新tr项目之前添加的,因此它没有附加到新tr。您必须将事件处理程序添加到新添加的项目中。您在这里的想法是正确的,但您不能从动态创建的元素(新行)委派。必须使用DOM.ready.OP上可用的元素,该元素使用的是
$(“#scale tr:last”)。在(newRow)之后$(“#scale tr:last”)
是一个静态的父对象。可能是。我太累了,不能肯定。:-)这对我不起作用。我刚刚创建了一个新函数并向其中添加了侦听器。每当我向表中添加新行时调用该函数,并且该函数正在工作。@kou是否也动态添加了
#scale tr:last
$("#scale  tr:last").on("focusout",".ip",function() {
     // Your code here
})