javascript - 如何在滚动时仅触发元素上的单击事件?

标签 javascript scroll triggers click

在监听滚动时,我只想在元素上触发一次单击事件。该事件应该滚动到一个元素。到目前为止我的代码:

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/

相关文章:

javascript - 检测页面是否有垂直滚动条?

jquery - 在用户到达底部之前使用 jquery 自动触发 "load more"链接。如何?

jquery - 滚动到每个元素的顶部,滚动不起作用

sql - 多个触发器与单个触发器

php - 从 MySQL 触发器调用 PHP 脚本

javascript - Gulp 插件根据运行的任务包含/排除 JS 代码行

javascript - Backbone.js 保存 "states"吗? (缓存策略)

triggers - 如何在zabbix中查看HTTP响应码?

javascript - 使用JS的replace()方法替换HTML实体

javascript - 在未识别的 native react 中导入 ES 模块