Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么`event.preventDefault()`不适用于两个嵌套的div?_Javascript_Html_Events - Fatal编程技术网

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');
}