猿问

获取触发事件的元素(节点)

是否可以找到正在侦听触发当前函数的事件的元素?


在下面的代码,event.target在返回的最低子节点#xScrollPane和event.currentTarget和event.fromElement均无效。有没有其他方法可以在#xScrollPane不进行硬编码的情况下检索 DOM 引用?


//convert vertical scroll wheel to horizontal scroll wheel:

function scrollWheelX(event) {

    if (event.deltaY == 0) return

    event.target.scroll(event.target.scrollLeft + event.deltaY * 5, event.target.scrollTop)

    event.preventDefault()

}

document.getElementById('xScrollPane').addEventListener('wheel', scrollWheelX)


蝴蝶刀刀
浏览 227回答 1
1回答

慕容3067478

编辑:在事件处理程序内部,this对象指的是事件处理程序添加到的元素。在this不引用所需元素或对象的情况下,您可以将元素绑定到this对象中。请注意,如果您需要使用removeEventListener,则必须将绑定函数传递给它,而不仅仅是原始函数。即使在这种情况下没有必要绑定的示例:function scrollWheelX(event) {    if(event.deltaY == 0) {        return;    }    this.scroll(this.scrollLeft + event.deltaY * 5, this.scrollTop);    event.preventDefault();}const scrollingElement = document.getElementById("scrollElement");scrollingElement.addEventListener("wheel", scrollWheelX.bind(scrollingElement));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答