javascript - 当您将鼠标悬停在javascript中的div上时如何只发出一次声音
问题描述
我有一些类名为“soundWhenHover”的 div。每当我将鼠标悬停在它上面时,我都想播放音频(点击声)。我可以通过使用类名迭代元素并为鼠标悬停添加事件侦听器来实现这一点。但是,如果您在 div 周围移动鼠标,它会发出不止一次的声音。每次将鼠标悬停在 div 上时,我只希望音频播放一次。我添加了一个布尔值,一旦它悬停就变为真,然后在鼠标悬停时将其变为假。这样做的问题是 div 有子元素,当您将鼠标悬停在这些元素上时,它会被视为鼠标移出。如何为 div和元素发出一次声音?
解决方案
只需将您的声音绑定到父元素的 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>
推荐阅读
- ios - 当 AVAudioSession 路由改变时发送本地通知 - Swift
- spring-webflux - Flux.any正确使用
- android - 为什么滚动视图将按钮隐藏在其他视图后面?
- r - 根据数据的可用性创建重复行
- android - 如何将底部导航侦听器添加到片段
- php - Symfony 4 对过滤后的数组集合进行排序
- react-native - 我正在使用 Font.loadAsync 并且仍然收到错误 fontFamily "open-sans" is not a system font 并且尚未通过 Font.loadAsync 加载
- java - 模拟 void 方法返回空指针异常
- ruby - 有没有一种方法可以遍历一组部分,然后调用该特定部分中的元素?
- regex - 从标签内的文本中删除换行符