我试图检测对表行的点击,但遇到问题。该表是从 javascript 文件生成的,并放置在 html 内的 div 内。该 div 名为“tableOutput”。如果我将其设置为“tableOutput”,我的 jquery 单击功能将起作用,但如果将其设置为“#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);
}
);
}
检测点击的代码:
$(document).ready(function() {
$('#dp1').datepicker();
loadUsers();
$('#mt tr').on("click", function(){
alert($(this).attr("id"));
});
});
你需要事件委托 https://learn.jquery.com/events/event-delegation/将事件绑定到动态添加的元素。由于您有表的静态父级,因此 div 具有 idtableOutput
您可以将事件委托给它。
$('#tableOutput').on("click", '#myTable tr', function(){
alert($(this).attr("id"));
});
委托活动
委托事件的优点是它们可以处理来自
稍后添加到文档中的后代元素。经过
选择一个保证当时存在的元素
附加了委托事件处理程序,您可以使用委托事件来
避免需要频繁附加和删除事件处理程序,jQuery 文档 https://api.jquery.com/on/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)