Jquery不会向新添加的字段添加侦听器

时间:2014-05-16 01:33:58

标签: 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' + 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);
});

该行添加得很漂亮。

我在文档就绪中也有以下功能:

$(".ip").focusout(function(){
    alert("here");
    var id =this.id;
    console.log(id);
    if(!ipcheck(id)){
        console.log("after function");
        $("#"+id).css("color","red");   
    }
    else(pinging(id));
});

每当我进入表格的第一行(最初存在的那一行)时,此代码会提醒我,但是对于新行,它不起作用。我的想法是将所有侦听器包装在一个函数中并在任何更改时运行该函数,但是因为我在代码中有很多这样的东西,我想知道是否有更好/更简单的方法来执行它。

1 个答案:

答案 0 :(得分:1)

由于您的input已动态添加到页面中,因此该元素无法使用所有事件,在这种情况下,您需要应用事件委派才能将这些事件附加到此新添加的{{ 1}}元素:

input