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想要的您错过了一个})代码>那里