javascript事件的传播基础实例讲解(35)

本文实例为大家分享了js事件的传播,供大家参考,具体内容如下

rush:xhtml;"> <Meta charset="UTF-8">

<script type="text/javascript">

function bind(obj,eventStr,callback){

if(obj.addEventListener){ 
 //如果是正常浏览器 
 obj.addEventListener(eventStr,callback,false); 
}else{ 
 //IE8 
 obj.attachEvent("on"+eventStr,function(){ 
  callback.call(obj); 
 }); 
} 

}

window.onload = function(){

/* 
 * 事件的传播 
 * - 关于事件的传播微软和网景公司有着不同的理解 
 * - 微软公司,认为事件应该是从后代元素向祖先元素传播,即从里向外传播,也就是我们所谓事件的冒泡 
 * - 网景公司,认为事件应该是从祖先元素向后代元素传播,即从外向里传播,这一阶段我们称为事件的捕获 
 * - W3C综合了两个公司的方案,将事件的传播分成了三个阶段 
 *  1.捕获阶段 
 *   - 事件从最外层的元素(document),向目标元素进行事件的捕获 
 *   - 此阶段<a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认不会触发事件 
 *  2.目标阶段 
 *   - 目标指的是触发事件的元素,捕获到目标元素则捕获阶段停止 
 *  3.冒泡阶段 
 *   - 事件从目标元素向祖先元素中冒泡,此时开始触发事件 
 *   - <a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认事件都是在冒泡阶段执行的 
 * 
 * - 事件都是<a href="https://www.jb51.cc/tag/mo/" target="_blank" class="keywords">默</a>认在冒泡阶段执行的,一般不需要在捕获阶段触发事件, 
 *  如果希望在捕获阶段执行事件,则需要将addEventListener()的第三个参数<a href="https://www.jb51.cc/tag/xiugai/" target="_blank" class="keywords">修改</a>为true 
 * 
 * - IE8及以下的浏览器没有捕获阶段,也不能设置在捕获阶段触发事件 
 */ 

//分别为三个div绑定单击响应<a href="https://www.jb51.cc/tag/hanshu/" target="_blank" class="keywords">函数</a> 
var <a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>1 = document.getElementById("<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>1"); 
var <a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>2 = document.getElementById("<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>2"); 
var <a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>3 = document.getElementById("<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>3"); 

bind(<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>1,"click",function(){ 
 alert(1); 
}) 

bind(<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>2,function(){ 
 alert(2); 
}) 

bind(<a href="https://www.jb51.cc/tag/Box/" target="_blank" class="keywords">Box</a>3,function(){ 
 alert(3); 
}) 

};

<div id="Box1">
<div id="Box2">
<div id="Box3">

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...