如何使用typescript获取addEventListener中的下一个兄弟

时间:2017-08-28 08:54:59

标签: javascript typescript

我正在尝试获取被点击的元素的下一个兄弟,我正在使用打字稿。这是我的代码。

let jobRowList = document.getElementsByClassName('job-item');
for(let i = 0; i < jobRowList.length; i++) {
  // add event listener for each element with class name job-item
  let jobRow = jobRowList.item(i);
  jobRow.addEventListener('click', (ev) => {
    console.log(this.nextSibling); // error
  });
}

但是,由于thisElement而不是HTMLElement,因此它没有名为nextSibling的属性,因此这里的typescript会引发错误。

TS2339: Property 'nextSibling' does not exist on type 'JobListTable'.

有没有办法使用typescript获取被点击元素的nextSibling?

1 个答案:

答案 0 :(得分:1)

箭头函数中的

this并未引用所单击的元素。您可以删除箭头功能并使用普通功能 - 但是使用箭头,您可能正在寻找

ev.currentTarget.nextElementSibling
jobRow.addEventListener('click', (ev) => {
    console.log(ev.currentTarget.nextElementSibling); 
});