JavaScript事件流与事件处理详解

需积分: 25 3 下载量 46 浏览量 更新于2024-09-23 收藏 119KB DOC 举报
"第三章 JavaScript事件" 在JavaScript中,事件是指用户与网页交互时发生的特定动作,例如鼠标点击、页面加载、键盘输入等。事件处理是JavaScript与用户进行交互的关键,使得网页能够根据用户的操作执行相应的功能。本章将深入探讨JavaScript事件的相关知识。 首先,了解事件流的概念至关重要。事件流描述了事件在DOM(文档对象模型)层次结构中传播的方式。主要有两种事件流模型:事件冒泡和事件捕获。事件冒泡是IE浏览器最初采用的模型,也是现在大部分浏览器默认的事件处理方式。在这种模型下,事件从最深的节点开始(即事件发生的目标元素),然后逐级向上层元素传播,直到到达DOM树的根节点(在非IE浏览器中通常是document,在IE中包括window)。例如,当用户点击一个内嵌在div内的input元素,点击事件会先触发input,然后是div,接着是body,最后是document。 除了事件冒泡,还有事件捕获模型,这是W3C DOM标准推荐的方式。在事件捕获中,事件首先由最顶层的祖先元素接收到,然后向下传递到目标元素。不过,实际应用中,事件捕获并不像事件冒泡那样常见。 JavaScript中,事件处理通常通过事件处理函数实现,这包括事件监听器(addEventListener)和事件处理程序(on*属性)。addEventListener方法允许添加多个事件处理函数,同时提供了捕获和冒泡阶段的选择,而on*属性则简单地将函数绑定到特定事件,不支持事件捕获。 在处理跨浏览器兼容性问题时,JavaScript开发者必须考虑到不同浏览器对事件处理的支持差异。例如,IE浏览器使用attachEvent方法来添加事件处理程序,而不是标准的addEventListener。此外,IE浏览器的事件对象与非IE浏览器有所不同,这需要在编写代码时进行适配。 典型JavaScript事件包括鼠标事件(click、mouseover、mouseout等)、键盘事件(keydown、keyup、keypress等)、UI事件(load、unload、resize、scroll等)以及自定义事件。这些事件可以被用于实现各种交互功能,如表单验证、动态内容更新、导航控制等。 在编写JavaScript事件处理代码时,需要注意以下几点: 1. 使用addEventListener或attachEvent确保兼容性。 2. 使用事件对象(event)来获取事件的详细信息,如事件类型、目标元素等。 3. 避免在事件处理函数中阻止冒泡(event.stopPropagation()),除非确实需要防止事件向上层元素传播。 4. 使用事件委托(event delegation)可以提高性能,通过在父元素上监听事件,然后检查事件源(event.target)来处理子元素的事件。 5. 注意处理事件的顺序和执行上下文,特别是当多个事件处理函数被触发时。 理解并熟练运用JavaScript事件是创建交互式Web应用的基础,也是提升用户体验的关键。通过深入学习和实践,开发者可以创建出更加动态、响应迅速的网页应用。
1950 浏览量
(答案见下载资源) 上机任务1 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)查找id号为tigerLily的元素 (2)查找拥有类myList的元素 (3)查找所有的input元素 (4)查找所有img元素和tr元素 (5)查找id号为coffeePot和id号为someDiv的元素 (6)选择具有id属性的所有元素 (7)选择具有id属性的input元素 (8)选择其value属性等于A的元素 (9)选择其value属性等于A或等于C的元素 (10)选择其title属性值中含有dog的img元素 (11)选择其href属性值以http开头的a元素 (12)选择div元素内嵌套的span元素 上机任务2 用chrome打开dom.sample2.html页面, 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (13)选择元素li,该元素作为拥有myList类的ul元素的直接子元素 (14)选择id号为radioA的input元素后面的第一个input兄弟元素 (15)选择id号为radioA的input元素后面的所有input兄弟元素 (16)选择dom sample页面中第3个tr元素 (17)选择其type属性值checkbox且索引为偶数的input元素 (18)选择非最后一行的tr元素 (19)选择所有的checkbox元素 (20)选择所有被选中的表单元素 (21)选择含有1972的td元素 (22)选择包含有sapn元素的div元素 (23)选择表格中每行的第一个单元格和最后一个单元格 (24)选择表格中第3行,标题行不算(要求用nth-child()过滤器) 上机任务3 用chrome打开dom.sample2.html页面,该页面中内嵌有几个CSS类:.red .green .blue .yellow .thickBorder .seeThrough 在chrome的控制台中输入jQuery代码并执行,完成以下选择动作: (1)将拥有alt属性的倒数第二个图片元素应用yellow类 (2)将第一个checkbox表单元素应用.green样式 (3)求id值为checkbox3的元素在所有表单元素里的顺序号 (4)用一条链式语句完成:先对所有img元素应用seeThrough样式,再为所有img元素和tr元素应用yellow样式 (5)用filter方法实现:选择单元格内容为Java或Smalltalk的单元格 (6)取图片集中的第2,3,4张图片 (7)用has方法实现:选择那些包含有ul元素的li元素 (8)将tbody每个单元格里的文字设为:我爱jQuery (9)查找form元素的后代元素中标签为label的元素 (10)查找表单元素中是否有id值为checkbox5的元素 提示: 为某dom元素应用某css样式可以使用jQuery中的addClass方法,例如:将id为tt的div元素应用.bt样式,可用些语句:$("#tt").addClass("color","red");