JavaScript的反跳:如何获取e.target?

时间:2018-09-27 00:21:08

标签: javascript

我正在使用https://davidwalsh.name/javascript-debounce-function中的去抖动功能。

现在的问题是:如何从事件监听器中获取事件(例如目标),并在去抖动的函数中使用它?

这是我想出的:

document.querySelector('textarea')
  .addEventListener('input', (e) => {
     debounce(
         () => { console.log('debounce at '+e.target.value); },
         1000,
         false
     )(e); // add (e) so that the function debounce returns gets called inside the anonymous function
  });

问题在于它会立即触发(并且去抖动效果会被有效消除)。

1 个答案:

答案 0 :(得分:1)

您需要包装输入事件处理程序,如下所示:

function handler(e) {
  console.log('debounce at '+e.target.value); 
}
const debouncedHandler = debounce(handler, 1000)
document.querySelector('textarea').addEventListener('input',debouncedHandler, false)

现在,当事件触发时,它将调用相同的处理程序,而不是新的处理程序

demo