今天我们来学习jQuery.Event对象。jQuery为了添加自己的处理机制,及可以传递用户自定义数据,于是Event对象就出世了。

  1 jQuery.Event = function( src, props ) {

  2     //instanceof 用于判断一个变量是否某个对象的实例

  3     if ( !(this instanceof jQuery.Event) ) {

  4         return new jQuery.Event( src, props );

  5     }

  6 

  7     // Event object

  8     if ( src && src.type ) {

  9         /*

 10          如果是event对象

 11          * */

 12         this.originalEvent = src;//将原生的event对象存于Event中

 13         this.type = src.type;//事件类型

 14 

 15         // Events bubbling up the document may have been marked as prevented

 16         // by a handler lower down the tree; reflect the correct value.

 17         /*

 18          修正isDefaultPrevented方法

 19          * */

 20         this.isDefaultPrevented = src.defaultPrevented ||

 21                 src.defaultPrevented === undefined &&

 22                 // Support: IE < 9, Android < 4.0

 23                 src.returnValue === false ?

 24             returnTrue :

 25             returnFalse;

 26 

 27     // Event type

 28     } else {

 29         //如果event是事件名称

 30         this.type = src;

 31     }

 32 

 33     // Put explicitly provided properties onto the event object

 34     //添加自定义属性

 35     if ( props ) {

 36         jQuery.extend( this, props );

 37     }

 38 

 39     // Create a timestamp if incoming event doesn't have one

 40     this.timeStamp = src && src.timeStamp || jQuery.now();//添加时间戳

 41 

 42     // Mark it as fixed

 43     this[ jQuery.expando ] = true;//标识event已被处理过

 44 };

 45 

 46 jQuery.Event.prototype = {

 47     isDefaultPrevented: returnFalse,

 48     isPropagationStopped: returnFalse,

 49     isImmediatePropagationStopped: returnFalse,

 50 

 51     preventDefault: function() {

 52         /*

 53          修正【阻止默认事件】

 54          * */

 55         var e = this.originalEvent;//取出原生evnet

 56 

 57         this.isDefaultPrevented = returnTrue;

 58         if ( !e ) {

 59             return;

 60         }

 61 

 62         // If preventDefault exists, run it on the original event

 63         if ( e.preventDefault ) {

 64             e.preventDefault();

 65 

 66         // Support: IE

 67         // Otherwise set the returnValue property of the original event to false

 68         } else {

 69             e.returnValue = false;

 70         }

 71     },

 72     stopPropagation: function() {

 73         /*

 74          修正【停止冒泡】

 75          * */

 76         var e = this.originalEvent;//取出原生evnet

 77 

 78         this.isPropagationStopped = returnTrue;

 79         if ( !e ) {

 80             return;

 81         }

 82         // If stopPropagation exists, run it on the original event

 83         if ( e.stopPropagation ) {

 84             e.stopPropagation();

 85         }

 86 

 87         // Support: IE

 88         // Set the cancelBubble property of the original event to true

 89         e.cancelBubble = true;

 90     },

 91     stopImmediatePropagation: function() {

 92         /*

 93          修正【stopImmdiatePropagation】

 94          stopImmediatePropagation 的功能比stopPropagation 多一些,

 95          除了可以阻止事件冒泡之外,还可以把这个元素绑定的同类型事件也阻止了。

 96          * */

 97         var e = this.originalEvent;

 98 

 99         this.isImmediatePropagationStopped = returnTrue;

 

         if ( e && e.stopImmediatePropagation ) {

             e.stopImmediatePropagation();

         }

 

         this.stopPropagation();

     }
107 }; 

Event方法主要是对兼容性做了处理看注释应该就明白了!

jQuery学习-事件之绑定事件(四)的更多相关文章

  1. jQuery学习-事件之绑定事件(三)

    在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event ...

  2. jQuery学习-事件之绑定事件(二)

    在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) {   ...

  3. jQuery学习-事件之绑定事件(一)

    我们都知道jQuery的事件其思想来源于Dean Edwards的addEvent,通过源码我们知道jQuery在为元素绑定事件时,每种类型的事件(click,blur)时只绑定了一次对应类型的事件处 ...

  4. jQuery如何给body绑定事件?

    jQuery如何给body绑定事件? 代码如下: $(document).bind("resize", function () { alert("php-note.com ...

  5. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  6. jQuery学习小结1-CSS操作+事件

    一.DOM对象和jQuery 对象互换 1.jQuery对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.比如: $(&quo ...

  7. jquery html 动态添加元素绑定事件

    由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数.我们知道,用Javascript向HTML文档中 插入内容,有两种方法, 一种是在写HTML代码写入JS,然后 ...

  8. jQuery相关方法7----各种事件和绑定事件

    一.jQuery事件 1.鼠标事件 click与dbclick事件 click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发 $ele.click(): ...

  9. jquery学习笔记(三):事件和应用

    内容来自[汇智网]jquery学习课程 3.1 页面加载事件 在jQuery中页面加载事件是ready().ready()事件类似于就JavaScript中的onLoad()事件,但前者只要页面的DO ...

  10. [jquery]高级篇--js绑定事件

    参考:  http://www.cnblogs.com/leejersey/p/3545372.html jQuery on()方法是官方推荐的绑定事件的一个方法.$(selector).on(eve ...

随机推荐

  1. 获取mssqlserver与access数据库插入的当前行的id

    //mssqlserver public static int GetInsertId(string sql) { try { SqlCommand cmd = new SqlCommand(); u ...

  2. javascript中可处理的浮点数的最高精度(和小数的一些小特性)

    1.之前在度娘那找了一下关于javascript中可处理的浮点数的最高精度的问题,但找了好久也找不到,于是自己 小小的研究了一下,之前以为是17,后来测到18,再后来又测到19,经过一系列的改写,得到 ...

  3. php 函数之 )_each()list()implode()explode()in_array()

    <?php /* implode() 把数组组合成字符串 explode() 把字符串分割成数组 in_array() 检测内容是否在数组中 each()把数组元素拆分成新的数组 list() ...

  4. mysql的四种隔离级别

    一.READ UNCOMMITTED(未提交读) 在READ UNCOMMITTED级别,事务中的修改,即使未提交,对其他事务也都是可见的.事务可以读取未提交的数据,这也被称为脏读( Dirty RE ...

  5. 接口(三)——JAVA的多重继承

    一.接口的作用 ①.为了能够向上转型为多个基类型 ②.防止客户端程序员创建该类的对象——同抽象类 二.通过继承扩展接口 interface Monster{ void menace(); } inte ...

  6. 最少步数(bfs)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  7. DPark安装及相关资料整理

    最近需要处理海量数据的分布式计算及数据挖掘,经过多次选择(hadoop,Spark,DPark),最后还是选择了DPark,主要是看中DPark的轻量级及python的灵活性,且除了豆瓣外,在几个友公 ...

  8. Oracle EBS-SQL (OM-3):销售连接停靠站时冲减库存出错处理.sql

    DELETE FROM INV.MTL_RESERVATIONS MRWHERE EXISTS (SELECT 1 FROM WSH.WSH_DELIVERY_ASSIGNMENTS WDA      ...

  9. Jquery基础之ajax

    ajax是Asynchronous JavaScript and XML(异步JavaScript和XML)的简称,ajax并不是单一的技术而是利用一系列交互网页应用相关的技术形成的结合体,ajax揭 ...

  10. 常用433MHZ无线芯片性能对比表分享

    常用433M芯片性能对比: 芯片型号 SI4432 CC1101 NRF905 A7102 A7108 输出功率 20dBm 10dBm 10dBm 15dBm 20dBm 功耗 TX:85mA RX ...