解决方法是使用事件委托(event delegation)和阻止事件冒泡(event propagation)的方式来避免多次触发点击事件。
代码示例:
// 获取包含点击事件的父元素
const parentElement = document.getElementById('parentElement');
// 给父元素添加点击事件监听器
parentElement.addEventListener('click', function(event) {
// 检查是否是回车键按下
if (event.key === 'Enter' || event.keyCode === 13) {
// 阻止事件冒泡
event.stopPropagation();
// 执行点击事件的逻辑
console.log('点击事件触发!');
}
});
在上面的代码中,我们给父元素 parentElement
添加了一个点击事件监听器。当点击事件发生时,首先检查按下的键是否是回车键。如果是回车键,我们阻止事件冒泡,然后执行点击事件的逻辑。
通过这种方式,即使回车键按下时会触发多次点击事件,但只有第一次点击事件会执行逻辑,后续的点击事件都会被阻止。