为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2023-03-03 09:54:35
我编写了以下脚本,它运行良好。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功能来缩短它。不幸的是,它还没有奏效。如何写好这段代码呢?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

很明显,这是一个 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 伪类。


h1{

  /* Style when not hovering */

}


h1:hover{

  /* Style when cursor is on element */

}


查看完整回答
反对 回复 2023-03-03
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号