在监听滚动时,我只想在元素上触发一次单击事件。该事件应该滚动到一个元素。到目前为止我的代码:
window.addEventListener('scroll', () => {
window.onscroll = slideMenu;
if (window.scrollY > elementTarget.offsetTop) {
const scrolledPx = (window.scrollY - elementTarget.offsetTop);
if (scrolledPx > 100) {
const link = document.getElementById('2');
link.click();
link.removeEventListener('click'); // ????
}
}
}
问题是,当我满足滚动Px > 100 的条件时 - 它不断触发 link.click() 事件。有什么想法如何做到吗?
最佳答案
定义变量并检查其条件
let disableClick = false
window.addEventListener('scroll', () => {
window.onscroll = slideMenu;
if (window.scrollY > elementTarget.offsetTop) {
const scrolledPx = (window.scrollY - elementTarget.offsetTop);
if (scrolledPx > 100 && !disableClick) {
const link = document.getElementById('2');
link.click();
disableClick = true
}
}
}
关于javascript - 如何在滚动时仅触发元素上的单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204821/