js之事件冒泡和事件捕获

来源:未知 责任编辑:责任编辑 发表时间:2014-05-26 10:59 点击:

1,IE只冒泡,W3c先捕获再冒泡
鉴于我自己理解事件冒泡和捕获的艰辛历程(看了数篇博文之后,我猜这个问题是不是很难~后来发现不是,难是应用到高级的功能中),我要把此文写得足够轻便,新手易懂。
为了方便测试(直接复制到html里面):
• <script type="text/javascript">
• document.write("<div id='o' style='width: 400px; height: 400px;border: 1px solid #CCCCCC'><div id='m' style='width: 200px; height: 200px;border: 1px solid #CCCCCC;'><div id='i' style='width: 100px;height: 100px;border: 1px solid #CCCCCC;'></div></div></div>");
• function $(id){
• return document.getElementById(id);
• }
• function altin(){
• alert("in");
• }
• function altmiddle(){
• alert("middle");
• }
• function altout(){
• alert("out")
• }
• $('o').onclick = altout;
• $('m').onclick = altmiddle;
• $('i').onclick = altin;
• </script>
这个代码很直观了,
事件冒泡(的过程):事件从发生的目标(event.srcElement||event.target)开始,沿着文档逐层向上冒泡,到document为止。
事件捕获(的过程):则是从document开始,沿着文档树向下,直到事件目标为止。
关键一句:在IE浏览器中,只发生事件冒泡的过程;在W3c(或支持事件捕获的)浏览器中,先发生捕获的过程,再发生冒泡的过程。以上demo在IE和FF下运行并无区别,其实FF浏览器下发生了捕获过程,只是什么也没“捕获”到罢了~
想要添加一个由捕获过程触发的事件,只能这样了:
addEventListener('click',functionname,true);//将第三个参数设置为true,表明该事件时为捕获过程设置的。
再上一个demo:
• <script type="text/javascript">
• document.write("<div id='o' style='width: 400px; height: 400px;border: 1px solid #CCCCCC'><div id='m' style='width: 200px; height: 200px;border: 1px solid #CCCCCC;'><div id='i' style='width: 100px;height: 100px;border: 1px solid #CCCCCC;'></div></div></div>");
• function $(id){
• return document.getElementById(id);
• }
• function altin(){
• alert("in");
• }
• function altmiddle(){
• alert("middle");
• }
• function altout(){
• alert("out")
• }
• $('o').onclick = altout;
• //$('m').onclick = altmiddle;
• $('m').addEventListener('click',altmiddle,true);
• $('i').onclick = altin;
• </script>
这个就不能在IE下运行了~
2.把事件捕获和冒泡的过程统称为事件的传播

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 用js检测两个线段是否相交
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
  • Jquery封装幻灯片效果
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1