Javascript 使用JQuery从生成的表中检测单击表行

Javascript 使用JQuery从生成的表中检测单击表行,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试检测对表行的单击,但遇到了问题。该表由javascript文件生成,并放置在html中的一个div中。该div名为“tableOutput”。如果我将jquery click函数设置为“tableOutput”,那么它将工作,但是我将它设置为“myTable”或“myTable tr”,它将不起任何作用。有什么建议吗?谢谢 生成表的代码: function loadUsers() { $.getJSON("api/users", function(data) { var use

我正在尝试检测对表行的单击,但遇到了问题。该表由javascript文件生成,并放置在html中的一个div中。该div名为“tableOutput”。如果我将jquery click函数设置为“tableOutput”,那么它将工作,但是我将它设置为“myTable”或“myTable tr”,它将不起任何作用。有什么建议吗?谢谢

生成表的代码:

function loadUsers() {
$.getJSON("api/users", function(data) {
    var userTable = "\
        <table id=\"mt\" class=\"table table-hover\"><tr><th>User ID</th><th>User Name</th><th>Password</th><th>First Name</th><th>Last Name</th><th>Email</th><th>Phone</th><th>DOB</th><th>Enabled</th></tr>";
    var count = 1;
    $.each(data, function(key, value) {
        userTable = userTable + "<tr id=\"tr" + count + "\"><td>" + value["userID"] + "</td><td>" + value["userName"] + "</td><td>" + value["password"] + "</td><td>" + value["firstName"] + "</td><td>" + value["lastName"] + "</td><td>" + value["email"] + "</td><td>" + value["phone"] + "</td><td>" + value["dateOfBirth"] + "</td><td>" + value["enabled"] + "</td></tr>";
        count = count + 1;
    });
    userTable = userTable + "</table>";
    $("#tableOutput").html(userTable);
}
);
}
您需要将事件绑定到动态添加的元素。由于您具有表的静态父级,因此id为
tableOutput
的div可以将事件委托给它

$('#tableOutput').on("click", '#myTable tr', function(){
    alert($(this).attr("id"));
});
委托事件

委派事件的优点是,它们可以从中处理事件 以后添加到文档中的子元素。通过 选择一个元素,该元素保证在 已附加委派事件处理程序,您可以使用委派事件 避免频繁附加和删除事件处理程序


我认为在绑定单击时,您的表不在那里,因为getJSON是psudo async的,非常感谢!我不敢相信这是一个如此容易的解决办法。
$('#tableOutput').on("click", '#myTable tr', function(){
    alert($(this).attr("id"));
});