我在点击表格行时尝试获取道明ID。
我已经找到了实现这一目标的方法,并找到了办法。但每次我点击时,都会弹出一个提示,但它是一个空文本。使用控制台,我看到错误代码是"未定义"。
这是我的代码:
function chooseCell() {
let square = 0;
let squareNumber = 0;
$("td").click((e) => {
let data = $(this).attr('id');
alert (data);
for (square in squarePositions) {
squareNumber += 1;
if (square[1] <= e.pageX <= square[3] && square[0] <= e.pageY <= square[2]) {
alert(squareNumber);
alert("Square Number : " + squareNumber);
}
}
}
)}
如果我通过以下方式替换警报(数据):
alert($('td').attr('id'));
警报会弹出第一张表格的TD。每当我点击不同的TD时,都会显示第一个ID
有人知道如何显示当前点击的ID吗? Google和SOF上的问题没有答案
非常感谢,最诚挚的问候。
答案 0 :(得分:2)
您正在为事件处理程序使用箭头函数。
箭头函数在它存在时不会重新定义它自己的 在全球范围内执行;相反,这个值 使用封闭执行上下文,相当于将其视为 关闭价值。
$("td").click((e) => {
let data = $(this).attr('id');
alert (data);
// ...
});
因此,在您的代码中,this
并未像您期望的那样引用td
。
您可以使用event.target使用以下代码访问td
let data = $(e.target).attr('id');
或者您也可以使用常规功能代替箭头功能,现在this
会引用td
$("td").click(function(e){
let data = $(this).attr('id');
alert (data);
// ...
});