Javascript 为什么`event.preventDefault()`不适用于两个嵌套的div?
Javascript 为什么`event.preventDefault()`不适用于两个嵌套的div?,javascript,html,events,Javascript,Html,Events,功能点击退出(事件){ event.preventDefault(); 警报(“点击退出”); } 功能点击(事件){ event.preventDefault(); 警报(“点击进入”); } #输出{ 宽度:100px; 高度:100px; 边框:1px纯红; } #在{ 宽度:50px; 高度:50px; 边框:1px纯蓝色; } 尝试使用事件.停止播放(): jQuery定义: 描述:防止事件在DOM树中冒泡, 防止任何父处理程序收到事件通知 MDN定义: 阻止当前事件的进一步传播 “防
功能点击退出(事件){
event.preventDefault();
警报(“点击退出”);
}
功能点击(事件){
event.preventDefault();
警报(“点击进入”);
}
#输出{
宽度:100px;
高度:100px;
边框:1px纯红;
}
#在{
宽度:50px;
高度:50px;
边框:1px纯蓝色;
}
尝试使用
事件.停止播放()
:
jQuery定义:
描述:防止事件在DOM树中冒泡,
防止任何父处理程序收到事件通知
MDN定义:
阻止当前事件的进一步传播
“防止默认值”不会阻止事件传播到父级。您想使用
event.stopPropagation()代码>阻止当前事件的进一步传播
功能点击退出(事件){
event.stopPropagation();
警报(“点击退出”);
}
功能点击(事件){
event.stopPropagation();
警报(“点击进入”);
}
#输出{
宽度:100px;
高度:100px;
边框:1px纯红;
}
#在{
宽度:50px;
高度:50px;
边框:1px纯蓝色;
}
css
这是因为没有默认的操作可以阻止。“防止默认”将在锚定标记上工作,锚定标记用于防止默认行为。您要做的是停止单击的传播,这样它就不会从内部div冒泡出来。这样,如果您单击内部div,只有内部div单击才会触发
将事件.preventDefault()
替换为事件.stopPropagation()
它会停止默认操作的发生(这对于锚定非常重要),但不会停止事件传播(冒泡)。您提到的描述来自jQuery文档;也许你会想考虑:“是的,我会把它添加到帖子里。”
function clickIn(event) {
event.stopPropagation();
alert('click on in');
}