javaScript对冒泡做一些分析与测试
<script src="js/冒泡.js"></script> <script type=text/javascript> </script> <style> body{ margin:0px; padding:0px; } #div1{ width:300px; height:200px; background:#CC3; margin:30px auto 0px 10px; position:relative; } #div2{ width:300px; height:200px; background:#096; position:absolute; left:310px; } #div11{ margin-left:10px; } </style> </head> <body id='obody'> <div id='div1' class='div1'> xxxxxx <div id='div11' class='div1'>fasdfa</div> </div> <div id='div2' class='div1'> </div> <div id='div3' class='div1' style="width:200px"> <div id='div31' class='div1'></div> </div> </body>
//冒泡 //若有结构如body--div1--div11 冒泡就是从div11--div1--body每一个节点都会触发事件 //来一例子 window.onload=function(){ /* document.getElementById('obody').onclick=function(evt){ var e=evt||winow.event; console.info("返回触发此事件的元素: "+e.target+" "+"返回其事件监听器触发该事件的元素: "+e.currentTarget); console.info("返回触发此事件的元素id: "+e.target.id+" "+"返回其事件监听器触发该事件的元素id: "+e.currentTarget.id); //结果对比下 //返回触发此事件的元素: [object HTMLDivElement] 返回其事件监听器触发该事件的元素: [object HTMLBodyElement] //冒泡.js:9 返回触发此事件的元素id: div1 返回其事件监听器触发该事件的元素id: obody //冒泡.js:8 返回触发此事件的元素: [object HTMLDivElement] 返回其事件监听器触发该事件的元素: [object HTMLBodyElement] //冒泡.js:9 返回触发此事件的元素id: div11 返回其事件监听器触发该事件的元素id: obody }; */ //由冒泡特性,如果我对body--div1--div三个节点分别添加了事件,根据其特性可知,点了div11,他的事件会触发,div1也会,当然包括body了 //所以有个要解决的问题就是,点了div11就触发div11的事件, //解决方案有两种,一种不让它向上冒泡,第二种就是代理了,第一种是有缺点的 //第一种 document.getElementById('obody').onclick=function(evt){ var e=evt||winow.event; console.info("谢谢光顾body"); }; document.getElementById('div11').onclick=function(evt){ var e=evt||winow.event; console.info("谢谢光顾div11"); e.stopPropagation(); //换一种不行 //e.preventDefault();//通知浏览器不要执行与事件关联的默认动作 //事件传播和默认操作是二个不同的机制, //一个是向上冒泡 一个是执行默认操作 }; //测试结果ok //第二种 //为了正常的向上冒泡,那就用代理吧(听起来可怕,实现起来很简单) /* document.getElementById('obody').onclick=function(evt){ var e=evt||winow.event; if(e.target.id=='div11'){ console.info("谢谢光顾div11"); }else if(e.target.id=='obody'){ console.info("谢谢光顾body"); } }; */ };
//到此结束
相关推荐
nmgxzm00 2020-11-10
ifconfig 2020-10-14
hhanbj 2020-11-17
zfszhangyuan 2020-11-16
古叶峰 2020-11-16
一个智障 2020-11-15
jipengx 2020-11-12
81427005 2020-11-11
xixixi 2020-11-11
游走的豚鼠君 2020-11-10
苗疆三刀的随手记 2020-11-10
Web卓不凡 2020-11-03
小飞侠V 2020-11-02
帕尼尼 2020-10-30
爱读书的旅行者 2020-10-26
帕尼尼 2020-10-23
杏仁技术站 2020-10-23
淼寒儿 2020-10-22