JavaScript mouseover 和 mouseleave 事件

标签 javascript mouseover mouseleave

我在相同的元素上有一个 mouseovermouseleave 事件监听器,当您 mouseover 时,它会添加一个类和 mouseleave 删除该类。

我正在运行forEach,以便当您将鼠标悬停特定项目时,它会显示该项目的特定文本 block 。这就是为什么我使用 JS 而不是纯 CSS。

我正在寻找一种方法来优化以下代码。

const pageNavRings = document.querySelectorAll('.page-nav-ring')

pageNavRings.forEach((pageRing) => {
  pageRing.addEventListener('mouseover', (e) => {
    const pageRingParent = e.target.closest('.page-nav__list--item')
    pageRingParent.querySelector('.page-nav-label').classList.add('is-visible')
  })

  pageRing.addEventListener('mouseleave', (e) => {
    const pageRingParent = e.target.closest('.page-nav__list--item')
    pageRingParent.querySelector('.page-nav-label').classList.remove('is-visible')
  })
})

看来这段代码可以写得更好、更DRY。所有和任何帮助将不胜感激。

最佳答案

我尝试使其更加紧凑和清晰。不确定您的 html,因此使用 parentElement 获取标签。

    const rings = document.querySelectorAll('.page-nav-ring')

    rings.forEach((ring) => {
        const label = ring.parentElement.querySelector('.page-nav-label');
        ring.addEventListener('mouseover', () => { label.classList.add("is-visible") });
        ring.addEventListener('mouseleave', () => { label.classList.remove("is-visible") });
    });

关于JavaScript mouseover 和 mouseleave 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48688584/

相关文章:

php - 如何让鼠标悬停功能在多个图像上工作,每个图像都有单独的伴随文本?

javascript - JQuery 隐藏/显示一个,而不是全部

c# - MouseLeave 未触发 C# WinForms

javascript - 视频播放器错误未捕获在 promise DOMException 中

javascript - 向 d3.js 分层条形图添加工具提示

html - 文本鼠标悬停触发的基于 CSS 的横幅图像交换

javascript - 使具有用户交互的 jQuery .mouseenter()/.mouseleave() 脚本工作时出现问题

javascript - HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

javascript - Google 地方信息自动填充强制选择

javascript - YouTube : get youtube title+ image+description like facebook