javascript - 如果没有 td 具有 id,则确定单击了哪个 td 元素
问题描述
我正在尝试<div>
使用 jQuery 更新一个表。我想为click
每个添加一个处理程序<td>
,但每个click
处理程序都不同<td>
。如果它没有,你怎么知道哪个<td>
被点击了id
?
$(document).ready(function(){
$("button").click(function(){
$.post("controller.php",{ },
function(data){
var obj = JSON.parse(data);
var object;
//add to a table...
var t = "<table id='newstable' class='table table-dark table-hover'><thead><tr><th>Post Subject</th><th>Last Post</th></tr></thead><tbody>";
for (var i = 0; i < obj.length; i++) { // for each row
object = obj[i];
t += "<tr>";
t += "<td colspan='2'>" + object[Object.keys(object)[0]] + "</td>"; // the property value, not the property name
//future lastpost td
t += '</tr>';
}
t += '</tbody></table>';
alert(t);
$("#main-container").html(t);
});
});
});
我了解,为了获得 id,您必须使用此代码
$(document).ready(function() {
$("#mycontainer").on('click', '#newtable tbody tr td', function(event) {
alert(event.target.id);
});
});
但是如果id
没有设置呢?
有人有什么建议吗?或指导?谢谢
我尝试编写 Daniel Lizik 的建议,这就是我想出的。它不起作用。任何如何解决它的想法将不胜感激。谢谢。
$(document).ready(function(){
$("#main-container").on('click','#newstable tbody tr td',function(event){
var clickedTd = event.target;
var newsTd;
$("#newstable td").each( function(){
newsTd = $(this);
if(clickedTd == newsTd){
alert("they match");
} else {
alert("no match");
}
});
});
});
解决方案
我认为最简单的方法是获取单元格的坐标。下面我给你举个例子。然后,您可以为每个坐标确定要采取的操作。否则,您还可以为每个元素添加一个数据属性,您可以在其中传递将用于 javascript 处理的信息。
$(document).ready(function() {
$("#mycontainer").on('click', '#newtable tbody tr td', function() {
var colIndex = $(this).index();
var rowIndex = $(this).parents('tr').index();
alert(colIndex + ',' + rowIndex);
});
});
推荐阅读
- android - Android约束textview相邻/尾到另一个textview会破坏UI
- sql - 如何打破序列
- c# - 为什么 C# OrderBy 这么快?
- hive - 使用 HQL 文件时从直线获取准确的返回码?
- apache-spark - 将数据帧转换为 rdd 并丢失标题列
- python - 在 Python 中:从键列表创建字典,但将所有值设置为 0?
- python - 带双引号的 JSON 输入字符串
- c - x ^ y 在 c 中做了什么?
- postman - Postman Collection Runner - 阅读 ECONNRESET
- python - Django models.py 没有 pk