关于javascript冒泡与默认事件的使用详解

对于javascript的冒泡,我一直误解它了,

冒泡,即是从底层往外blow blow blow ...

惭愧的是,我一直以为阻止冒泡是阻止父元素往子元素传递事件……

贴上一串代码以便往后回顾!


代码如下:

<script type="text/javascript">
 window.onload=function(){
 var a=document.getElementById("a");
 var b=document.getElementById("b");
 var c=document.getElementById("c");
 var c=document.getElementById("d");

a.onclick=function(e){
         this.style.background="#000";   
         };

b.onclick=function(e){
             this.style.background="#ccc";
             //阻止事件冒泡
             window.event.cancelBubble = true;//IE8以下
             e.stopPropagation();
         };

d.onmousedown=function(e){
         //阻止默认事件,比如在chrome下图片有拖拽默认行为
         window.event.returnValue = false;
         e.preventDefault();
     }
 }

</script>

代码如下:

Html部分
 <div id="a" style="width:300px;height:300px;background:red;overflow:hidden;">
     <div id="b" style="width:200px;height:200px;background:green;margin:50px 0 0 50px;overflow:hidden;">
         <div id="c" style="width:100px;height:100px;background:yellow;margin:50px 0 0 50px;overflow:hidden;">
             <img src="240x240.jpg" width="50" height="50" id="d" />
         </div>
     </div>
 </div>

另一个例子:


代码如下:

<script type="text/javascript">
window.onload=function(){
    document.getElementById("test").addEventListener('click',function(e){
        alert('aaaa')
    },false);

document.getElementById("test1").addEventListener('click',function(e){
        alert('bbb')
        e.stopPropagation();
    },false)
}
</script>

代码如下:

<style type="text/css">
#test1{width:100px;height:100px;background:#ff0}
#test2{width:100px;height:100px;background:#ff0}
</style>
<div id="test" style="width:100px;height:100px;background:#f60;padding:20px;">
    <div id="test1"></div>
</div>

(0)

相关推荐

  • js阻止默认浏览器行为与冒泡行为的实现代码

    在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到"停止事件冒泡"和"阻止浏览器默认行为". 1. 阻止浏览器的默认行为 function stopDefault(e) { //如果提供了事件对象,则这是一个非IE浏览器 if(e && e.preventDefault) { //阻止默认浏览器动作(W3C) e.preventDefault(); } else { //IE中阻止函数器默认动作的方式 window.event.returnVa

  • javascript事件冒泡详解和捕获、阻止方法

    一.事件的发生顺序 这个问题的起源非常简单,假设你在一个元素中又嵌套了另一个元素 复制代码 代码如下: ----------------------------------- | element1                        | |   -------------------------     | |   |element2               |     | |   -------------------------     | |                 

  • js阻止冒泡和默认事件(默认行为)详解

    本文实例为大家分享了js阻止冒泡和默认事件方法,供大家参考,具体内容如下 阻止冒泡.冒泡简单的举例来说,儿子知道了一个秘密消息,它告诉了爸爸,爸爸知道了又告诉了爷爷,一级级传递从而引起事件的混乱,而阻止冒泡就是不让儿子告诉爸爸,爸爸自然不会告诉爷爷了.下面的domo就是很好的例子. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

  • js停止冒泡和阻止浏览器默认行为的简单方法

    停止冒泡通用方法: function stopBubble(e) { //如果提供了事件对象,是非IE浏览器 if ( e && e.stopPropagation ) //使用W3C的stopPropagation()方法 e.stopPropagation(); else //使用IE的cancelBubble = true来取消事件冒泡 window.event.cancelBubble = true; } 阻止浏览器默认行为-通用方法 //阻止浏览器的默认行为 function s

  • js事件冒泡、事件捕获和阻止默认事件详解

    谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 1.事件冒泡 先来看一段代码: var $input = document.getElementsByTagName("input")[0]; var $div = document.getElementsByTagName("div")[0]; var $body = document.getElementsByTagName("bo

  • js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件

    1. event.preventDefault();  -- 阻止元素的默认事件. 注:a元素的点击跳转的默认事件 , button,radio等表单元素的默认事件 , div 元素没有默认事件 例: 复制代码 代码如下: <a href="http://www.baidu.com" target="_black">百度</a> 复制代码 代码如下: var samp = document.getElementByTagName("

  • 阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)

    cancelBubble在IE下有效 stopPropagation在Firefox下有效 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml

  • js之事件冒泡和事件捕获详细介绍

    (1)冒泡型事件:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozilla 1.0: div -> body -> html -> document -> window (2)捕获型事件(event capturing):事件从最不精确的对象(document 对象)开

  • js冒泡、捕获事件及阻止冒泡方法详细总结

    javascript, jquery的事件中都存在事件冒泡和事件捕获的问题,下面将两种问题及其解决方案做详细总结. 事件冒泡是一个从子节点向祖先节点冒泡的过程: 事件捕获刚好相反,是从祖先节点到子节点的过程. 给一个jquery点击事件的例子: 代码如下: 复制代码 代码如下: <!DOCTYPE html> <meta charset="utf-8"> <title>test</title> <head> <scrip

  • JS阻止冒泡事件以及默认事件发生的简单方法

    如果<p>是在<div>里面,那么呢,<P>有一个onclick事件,<div>也有onclick事件,为了触发<P>的点击事件时,不触发父元素的点击事件,那么就需要调用如下函数: 复制代码 代码如下: function stopBubble(e){  if(e&&e.stopPropagation){//非IE   e.stopPropagation();  }  else{//IE   window.event.cancelB

随机推荐