javascript - 当您将鼠标悬停在javascript中的div上时如何只发出一次声音

标签 javascript audio hover mouseover

我有一些类名为“soundWhenHover”的 div。
每当我将鼠标悬停在它上面时,我都想播放音频(点击声)。我可以通过使用类名迭代元素并为鼠标悬停添加事件监听器来实现这一点。但是,如果您在 div 周围移动鼠标,它会发出不止一次的声音。每次将鼠标悬停在 div 上时,我只希望音频播放一次。
我添加了一个 bool 值,一旦它悬停就变为真,然后在鼠标悬停时将其变为假。这样做的问题是 div 有子元素,当您将鼠标悬停在这些元素上时,它会被视为鼠标移出。如何为 div 和元素发出一次声音?

最佳答案

只需将您的声音绑定(bind)到父元素的 mouseenter 事件:

const mouseTarget = document.getElementById('mouseTarget');

mouseTarget.addEventListener('mouseenter', e => {
  console.log('play sound');
});
#mouseTarget, #child {
  border: 1px solid #333;
}

#mouseTarget {
  padding: 5px;
  width: 300px;
  height: 50px;
}


#child {
  padding: 5px;
  width: 200px;
  height: 20px;
}
<div id="mouseTarget">
 <div id="child">
  Test
 </div>
</div>

关于javascript - 当您将鼠标悬停在javascript中的div上时如何只发出一次声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64320027/

相关文章:

javascript - 如何在 jsx 中导入和使用 javascript 函数?

javascript - 清除 setTimeout 问题

c# - 如何检测WP8中是否播放背景音乐?

java - 播放采样声音javax.sound.sampled时的巨大延迟

javascript - Jquery:当悬停在菜单项上时,显示文本

Javascript 全局对象在函数中返回未定义

javascript - 在html中选择屏幕坐标(x,y)处的单个单词

Java 小程序 : Basic Drum Set

css - 使用 CSS 过渡时文本摆动

qt - 已停用 QListWidgetItem :hover