首页 > 解决方案 > 当文档位于禁用元素上时,不会触发文档的事件

问题描述

当我给文档一个mouseup事件时,如果鼠标在一个禁用的元素中并且我释放了按钮。文档mouseup事件处理程序无法触发。我应该如何让处理程序被调用?

例子:

document.addEventListener('mouseup', () => {
  console.log('mouseup')
}, true)

const changeBtn = document.getElementById('change')
const testBtn = document.getElementById('test')

changeBtn.onclick = () => {
  testBtn.setAttribute('disabled', true)
}
testBtn.onclick = () => {
  console.log('testBtn click')
}
<button id="test">test</button>
<button id="change">change</button>

标签: javascripthtmldomfrontenddom-events

解决方案


pointer-events: none:disabled元素上使用 CSS 集:

document.addEventListener('mouseup', () => {
  console.log('mouseup')
}, true)

const changeBtn = document.getElementById('change')
const testBtn = document.getElementById('test')

changeBtn.onclick = () => {
  testBtn.setAttribute('disabled', true)
}
testBtn.onclick = () => {
  console.log('testBtn click')
}
*:disabled {
  pointer-events: none;
}
<button id="test">test</button>
<button id="change">change</button>


推荐阅读