jQuery源码学习(版本1.11)-事件处理-jQuery事件对象
来源:互联网 发布:透视衣服的软件 编辑:程序博客网 时间:2024/06/04 23:30
概述
本文详细分析jquery-1.11.1.js源码文件行数:4908~4997;
代码简介:构造函数jQuery.Event用于创建jQuery事件对象实例,jQuery.Event.fn为其原型。jQuery事件对象是jQuery各种事件处理方法中使用的模型,里面对原生事件模型进行了包装,解决了一些兼容性问题,增加了一些属性强化事件对象的功能;
下文进行详细代码分析。
jQuery.Event
// 构造函数jQuery.Event = function( src, props ) {// 兼容不使用new的初始化方式(实际表明所有jQuery.Event都是通过new生成的对象)if ( !(this instanceof jQuery.Event) ) {return new jQuery.Event( src, props );}// src是原生事件对象,里传进来type,以及其他各种参数if ( src && src.type ) {// 引用原生事件对象到新事件对象中this.originalEvent = src;this.type = src.type;// 设置isDefaultPrevented方法,src有则用里面的,没有则根据条件设置为returnTrue或returnFalsethis.isDefaultPrevented = src.defaultPrevented ||src.defaultPrevented === undefined &&src.returnValue === false ?returnTrue :returnFalse;// src里面没有type属性,则直接让type等于src} else {this.type = src;}// 将props作为事件另外扩展的属性扩展进新事件对象// 注意这里props是一个对象,具体需要扩展的属性在对象里面if ( props ) {jQuery.extend( this, props );}// 创建时间戳this.timeStamp = src && src.timeStamp || jQuery.now();// 设置JQ版本标志this[ jQuery.expando ] = true;};// jQuery.Event是基于ECMAScript标准的DOM3级事件开发的jQuery.Event.prototype = {// 定义三个函数属性,值全是returnFalseisDefaultPrevented: returnFalse,isPropagationStopped: returnFalse,isImmediatePropagationStopped: returnFalse,// jQuery.Event的preventDefault方法preventDefault: function() {// 获取原生事件对象var e = this.originalEvent;// 表示已经执行过preventDefaultthis.isDefaultPrevented = returnTrue;if ( !e ) {return;}// 原生事件对象存在preventDefault,则直接执行if ( e.preventDefault ) {e.preventDefault();// 兼容IE,IE的原生事件是通过returnValue设置为false,才阻止事件默认行为的} else {// 设置原生事件的returnValue为falsee.returnValue = false;}},// jQuery.Event的stopPropagation方法stopPropagation: function() {// 获取原生事件对象var e = this.originalEvent;// 表示已经执行过stopPropagationthis.isPropagationStopped = returnTrue;if ( !e ) {return;}// 存在使用原生事件的stopPropagationif ( e.stopPropagation ) {e.stopPropagation();}// 兼容IE,设置cancelBubble为true;e.cancelBubble = true;},// stopImmediatePropagation的作用是使阻止事件冒泡的同时,阻止该元素绑定的该事件类型的其他回调函数的执行stopImmediatePropagation: function() {// 获取原生事件对象var e = this.originalEvent;this.isImmediatePropagationStopped = returnTrue;// 存在使用原生事件的stopImmediatePropagation,IE应该是没有这个功能的if ( e && e.stopImmediatePropagation ) {e.stopImmediatePropagation();}// 这里应该是稍微兼容一下IE,对于IE就调用stopPropagation即可this.stopPropagation();}};
0 0
- jQuery源码学习(版本1.11)-事件处理-jQuery事件对象
- jQuery源码学习(版本1.11)-事件处理-整体架构
- jQuery源码学习(版本1.11)-事件处理-实例函数
- jQuery源码学习(版本1.11)-事件处理-工具函数jQuery.event
- 【代码片-1】 jQuery源码学习(版本1.11)-事件处理-实例函数
- jQuery源码学习(版本1.11)-创建jQuery对象
- jQuery事件-事件对象
- jquery学习(四)事件处理
- jQuery学习第五课(jquery中的事件和事件对象)
- jQuery事件与事件对象
- jQuery事件与事件对象
- jQuery事件与事件对象
- JavaScript学习 jquery学习8 事件处理
- jquery-事件-on源码
- 【jQuery】jQuery中的事件处理
- jQuery事件处理 、 jQuery动画
- jquery中事件对象、事件处理函数的简单理解
- JQuery 事件处理
- virtualbox 虚拟redhat 安装163yum源
- 驾照 科二记录
- Android drawable 玩转自定义图片以及bug的解决
- C++函数重载(6) - main函数重载
- hdu 1394 Minimum Inversion Number
- jQuery源码学习(版本1.11)-事件处理-jQuery事件对象
- Nginx简单demo
- 每日一题(24) - 快速寻找满足条件的两个数
- Android中自定义View的MeasureSpec使用
- 【转】char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][], and so
- Sublime Text 2 离线安装 (ubuntu)
- C++内联函数
- 怎样的生活才美好?
- toposh笔记本 系统重装,硬盘文件找不到,分辨率1366*768图标还是很大问题,定制自己的gho,记录