当鼠标移动时,我使用将元素附加到鼠标上
let follower = document.getElementById('followMouse');
const onMouseMove = (e) => {
follower.style.left = e.pageX + 'px';
follower.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', onMouseMove);
稍后,当我尝试做一个"点击"事件侦听器时,点击不会触发:
let myElem = document.createElement('div');
myElem.classList.add('myDiv');
myElem.addEventListener('click', () => {
console.log('click in the myElem');
})
document.body.appendChild(myElem);
但是,如果我注释掉前面的mousemove事件侦听器,它就会触发。
为什么mousemove事件监听器不允许我稍后添加click监听器?
测试代码段:
let follower = document.getElementById('followMouse');
const onMouseMove = (e) => {
follower.style.left = e.pageX + 'px';
follower.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', onMouseMove);
let myElem = document.createElement('div');
myElem.classList.add('myDiv');
myElem.addEventListener('click', () => {
alert('click in the myElem'); //not working
})
document.body.appendChild(myElem);
.myDiv {
width: 100px;
height: 100px;
background-color: aqua;
}
#followMouse {
position: absolute;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.myDiv {
width: 100px;
height: 100px;
background-color: aqua;
}
#followMouse {
position: absolute;
}
</style>
</head>
<body>
<div id="followMouse">Follow mouse</div>
</body>
</html>
鼠标光标后面的文本覆盖了要单击的div。
添加pointer-events: none
以修复问题
let follower = document.getElementById('followMouse');
const onMouseMove = (e) => {
follower.style.left = e.pageX + 'px';
follower.style.top = e.pageY + 'px';
}
document.addEventListener('mousemove', onMouseMove);
let myElem = document.createElement('div');
myElem.classList.add('myDiv');
myElem.addEventListener('click', () => {
alert('click in the myElem'); //not working
})
document.body.appendChild(myElem);
.myDiv {
width: 100px;
height: 100px;
background-color: aqua;
}
#followMouse {
position: absolute;
pointer-events: none;
}
<div id="followMouse">Follow mouse</div>