Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表'上未触发事件;s动态添加的行_Javascript_Jquery - Fatal编程技术网

Javascript 表'上未触发事件;s动态添加的行

Javascript 表'上未触发事件;s动态添加的行,javascript,jquery,Javascript,Jquery,我有一个表示例,其中动态添加了行。每行应触发以下事件: $("#tblTest > tbody > tr").on("click", function(e){ alert(); }); 此代码不适用于动态添加的行。有什么问题吗?像这样试试 $(function() { $(document).on("click", "#tblTest > tbody > tr", function(e) { alert(); })

我有一个表示例,其中动态添加了行。每行应触发以下事件:

  $("#tblTest > tbody > tr").on("click", function(e){    
    alert();        
  });
此代码不适用于动态添加的行。有什么问题吗?

像这样试试

$(function() {
  $(document).on("click", "#tblTest > tbody > tr", function(e) {
    alert();
  });
});

您应该更改代码,以便将正文用于.on事件:

  $("body").on("click", "#tblTest > tbody > tr", function(e){    
    alert();        
  });

它在创建时将单击添加到tr。相反,您需要攻击点击tbody,然后过滤到tr

  $("#tblTest > tbody").on("click", "tr", function(e){    
    alert();        
  });

对于手动添加的元素,您需要使用

$(document).on("click", "#tblTest > tbody > tr", function(e){    
    alert('test');        
  });

更新

动态添加行时,必须将新的onClick侦听器绑定到添加的元素。您的代码只将侦听器添加到页面上已有的元素中;不是新创建的元素。像这样的东西可以很好地工作:

var AddRow = function(){
     // add element
     $("#tblTest > tbody").append("<tr><td>Test name</td><td>Last anme</td></tr>");
     // add listener to new element
     $("#tblTest > tbody > tr:last-of-type").on("click", function(e){    
          alert();        
     });
}
var AddRow=function(){
//添加元素
$(“#tblTest>tbody”).append(“testnamelastanme”);
//将侦听器添加到新元素
$(“#tblTest>tbody>tr:last of type”)。单击(“click”,函数(e){
警惕();
});
}

psuedo选择器的最后一个类型是避免将多个侦听器绑定到单元格的关键。

您可以使用事件委派

 $(document).off('click.namespace').on('click.namespace', '#tblTest > tbody > tr', function (e) {
alert();           
  });
它将重新绑定事件。
因此,动态附加的行也与事件绑定。

两个词事件委派。=)可能重复将其切换到
>tr
,因为这似乎是OP想要的您错过了一个
})那里