Javascript 使用JQuery从生成的表中检测单击表行
我正在尝试检测对表行的单击,但遇到了问题。该表由javascript文件生成,并放置在html中的一个div中。该div名为“tableOutput”。如果我将jquery click函数设置为“tableOutput”,那么它将工作,但是我将它设置为“myTable”或“myTable tr”,它将不起任何作用。有什么建议吗?谢谢 生成表的代码: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
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"));
});