javascript - 单击内部 div 时也会单击外部 div

标签 javascript html onclick

我有一个名为 paragraph 的外部 div 和两个名为 word 的内部 div。我在 JS 中还有一个自定义音频播放功能,这是我从另一篇 SO 帖子中获得的:

<div class="paragraph" onclick="playSound('this, paragraph.mp3');">
    <div class="word" onclick="playSound('this, word1.mp3');">Word1</div>
    <div class="word" onclick="playSound('this, word2.mp3');">Word2</div>
</div>


function playSound(el,soundfile) {
    if (el.mp3) {
        if(el.mp3.paused) el.mp3.play();
        else el.mp3.pause();
    } else {
        el.mp3 = new Audio(soundfile);
        el.mp3.play();
    }
}

当我点击段落 div 时,它会完美地播放 paragraph.mp3。但是,当我单击其中一个单词 div 时,它会同时播放 paragraph.mp3word.mp3。我怎样才能阻止这种情况发生?

最佳答案

如果您使用 addEventListener() 而不是内联 onclick,您可以在传递给它的事件对象上调用 stopPropagation() 以防止事件冒泡。

word1Div.addEventListener('click', function(event) {
    event.stopPropagation();
    playSound(this, 'word1.mp3');
}

关于javascript - 单击内部 div 时也会单击外部 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52582403/

相关文章:

javascript - 在 disconnectedCallback 中取消从 DOM 中删除的自定义元素的所有引用

html - 背景大小 : initial not working in IE10 and under

html - Firefox/IE 中的 CSS 问题

html - 移除 iframe 水平滚动条

google-maps-api-3 - 谷歌地图在按钮单击上加载 map - 使用另一个按钮加载标记

Android自定义对话框按钮XML onClick错误

javascript - jQuery.animate() - 单击事件不触发

javascript - 如何正确从 JSON.stringify 中提取数据

javascript - 无法清除客户端的 ModelState 错误?有可能吗?

javascript - 如何使用 JavaScript 将所有字体动态减少到 50%?