gpt4 book ai didi

javascript - 悬停时高效的 JS 事件监听器

转载 作者:行者123 更新时间:2023-12-05 08:49:32 27 4
gpt4 key购买 nike

我已经编写了以下脚本,它运行良好。

function LogoHoverAdd() {
this.classList.add("logo__container--hover");
}
function LogoHoverRemove() {
this.classList.remove("logo__container--hover");
}

var logo = document.querySelector("h1");
logo.addEventListener("mouseover", LogoHoverAdd);
logo.addEventListener("mouseout", LogoHoverRemove);

我认为,这种方法效率很低,因为我必须实现其中一些事件监听器。因此,我试图通过将它放在一起或使用 ClassList Toggle 函数来缩短它。不幸的是,它还没有奏效。

如何写好这段代码?

[[我没有使用 jquery。]]

最佳答案

很明显这是一个 Javascript 问题,这里是您可以创建可重用函数的方法。

function hover(element, enter, leave){
element.addEventListener('mouseenter', enter)
element.addEventListener('mouseleave', leave)
}

然后您可以像这样传递您的元素和回调函数。

hover(document.querySelector('h1'), e => {
// On hover
e.target.classList.add("logo__container--hover")
}, e => {
// On exit hover
e.target.classList.remove("logo__container--hover")
})

您也可以通过修改悬停功能来减少代码行数。

function hover(element, className){
element.addEventListener('mouseenter', e => element.classList.add(className))
element.addEventListener('mouseleave', e => element.classList.remove(className))
}

然后像这样使用它。

hover(document.querySelector('h1'), "logo__container--hover")

您现在可以将其重复用于多个元素。


这是我之前的回答:正如 JHeth 提到的,使用 CSS pseudo-classes相反。

h1{
/* Style when not hovering */
}

h1:hover{
/* Style when cursor is on element */
}

关于javascript - 悬停时高效的 JS 事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63894692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com