jQuery - 点击时检测TD ID

时间:2018-03-25 16:48:43

标签: javascript jquery

我在点击表格行时尝试获取道明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上的问题没有答案

非常感谢,最诚挚的问候。

1 个答案:

答案 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);
     // ...
});