`
manxisuo
  • 浏览: 27938 次
  • 性别: Icon_minigender_1
  • 来自: 东营
社区版块
存档分类
最新评论

捕获与冒泡

阅读更多

捕获与冒泡

如下,有三层DIV结构,div1 > div2 >div3

 

在每个div上都绑定两个事件监听器:

div1.addEventListener('click', function(){
    console.log('div1: capture');
}, true);

div1.addEventListener('click', function(){
    console.log('div1: bubble');
}, false);

div2.addEventListener('click', function(){
    console.log('div2: capture');
}, true);

div2.addEventListener('click', function(){
    console.log('div2: bubble');
}, false);

div3.addEventListener('click', function(){
    console.log('div3: capture');
}, true);

div3.addEventListener('click', function(){
    console.log('div3: bubble');
}, false);

 

在div3上点击时输出:

div1: capture
div2: capture
div3: capture
div3: bubble
div2: bubble
div1: bubble

 

在div2上点击时输出:

div1: capture
div2: bubble
div2: capture
div1: bubble

 

在div1上点击时输出:

div1: capture
div1: bubble
 

阻止冒泡的方法

使用事件对象的 Event.prototype.stopPropagation方法

 

继续上面的例子,执行下面脚本

div3.addEventListener('click', function(e){
    e.stopPropagation();
}, false);

 

然后再次点击div3,输出:

div1: capture
div2: capture
div3: capture
div3: bubble

此时,div3的click事件不会再冒泡到它的父元素了。

 

 

  • 大小: 1.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics