,,JavaScript阻止事件冒泡的方法

,,JavaScript阻止事件冒泡的方法

本文主要介绍如何基于JavaScript防止事件冒泡。事件冒泡一开始是由最具体的元素接收,然后一步步扩散到DOM的顶层节点。更多详情,请有需要的朋友参考以下文章的具体内容。希望对你有帮助。

我们需要注意的是:事件冒泡本身的特点,会带来的坏处,会带来的好处,会在后续博客中详细讲解。

所以这里我们就讨论一下如何防止事件冒泡。比如有一个子框和一个父框,两个框都有click事件,但是这个时候我们点击子框,只希望子框显示click事件。这里,我们将使用防止事件冒泡的方法来切断父框的事件显示。

先创建两个盒子,并给他们添加点击事件,如下所示:

!文档类型html

html lang='en '

meta charset='UTF-8 '

meta http-equiv=' X-UA-Compatible ' content=' IE=edge '

meta name=' viewport ' content=' width=device-width,initial-scale=1.0 '

标题文档/标题

风格。父亲{

边距:100px自动;

宽度:100px

高度:100px

溢出:隐藏;

背景色:浅绿色;

}。儿子

宽度:50px

高度:50px

左边距:25px

边距-顶部:25px

背景色:浅青绿色;

}

/风格

/头

身体

div class='父亲'

div class='son'/div

/div

脚本

var father=document . query selector('。父亲’);

var son=document.querySelector('。子’);

son.addEventListener('click ',function(){

alert('儿子');

},假)

father.addEventListener('click ',function(){

alert('父亲');

},假)

/脚本

/body

/html

当我们点击子盒子的点击事件时,打印结果为:

我们应该怎样阻断父盒子的点击事件呢?

您可以在子框内的click事件中直接添加stopPropagation()方法,

如下所示:

son.addEventListener('click ',函数(e){

alert('儿子');

e .停止传播();

},假)

此时,运行结果为:

阻挡成功。

但是需要注意的是:这个方法也有兼容性问题。在较低版本的浏览器(IE 6-8)中,通常使用事件对象的cancelBubble属性进行操作。即直接添加到相应的click事件中:

e.cancelBubble=true

如果我们想要解决这种兼容性问题,就可以采用下述方法:

如果(例如停止传播){

e .停止传播();

}否则{

window . event . cancel bubble=true;

}

这就是这篇关于基于JavaScript防止事件冒泡的文章。有关防止JavaScript事件冒泡的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: