Javascript 为什么在代理事件不起作用的情况下单击?
我尝试绑定文档以委派我的单击事件,如果用户单击loginpage的部分,它应该消失或被删除,但除了我单击loginpage时的signinpage,其他部分仍然会被删除(如输入)。它应该在div标志页上冒泡,否则它就不会那样工作了? 这让我困惑了两天,请帮我把它修好Javascript 为什么在代理事件不起作用的情况下单击?,javascript,onclick,click,Javascript,Onclick,Click,我尝试绑定文档以委派我的单击事件,如果用户单击loginpage的部分,它应该消失或被删除,但除了我单击loginpage时的signinpage,其他部分仍然会被删除(如输入)。它应该在div标志页上冒泡,否则它就不会那样工作了? 这让我困惑了两天,请帮我把它修好 const loginbtn=document.getElementById('loginbtn') const whitepart=document.getElementById('whitepart') const loginp
const loginbtn=document.getElementById('loginbtn')
const whitepart=document.getElementById('whitepart')
const loginpage=document.createElement('div')
loginpage.id=“loginpageid”
loginbtn.addEventListener('单击',()=>{
whitepart.appendChild(登录页面)
loginpage.innerHTML=`
`
const signingpage=document.getElementById('sign\u in\u out')
如果(!!签名页){
document.addEventListener('单击',(e)=>{
如果(例如,目标!==签名页){
loginpage.removechild(签名页)
}
})
}
在您的click listener中更改e.target!==signinpage
为e.target.closest(“#sign#u in_u”)
,因此如果用户在登录页面内单击,e.target.closest(#sign_in_u out”)
将返回sign#in__out
div引用,否则该引用将为空
当您使用e.target
时,它可以是任何内容,也可以是img、表单或输入
,事件.target返回用户单击的项目。
事件接口的target属性是对调度事件的对象的引用
document.addEventListener('click', (e) => {
if (e.target.closest("#sign_in_out") === null) {
loginpage.removechild(signinpage)
}
})