jQuery学习-事件之绑定事件(四)
今天我们来学习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学习-事件之绑定事件(四)的更多相关文章
- jQuery学习-事件之绑定事件(三)
在上一篇<jQuery学习-事件之绑定事件(二)>我们了解了jQuery的dispatch方法,今天我们来学习下handlers 方法: handlers: function( event ...
- jQuery学习-事件之绑定事件(二)
在上一篇<jQuery学习-事件之绑定事件(一)>我们了解了jQuery的add方法,今天我们来学习下dispatch方法: dispatch: function( event ) { ...
- jQuery学习-事件之绑定事件(一)
我们都知道jQuery的事件其思想来源于Dean Edwards的addEvent,通过源码我们知道jQuery在为元素绑定事件时,每种类型的事件(click,blur)时只绑定了一次对应类型的事件处 ...
- jQuery如何给body绑定事件?
jQuery如何给body绑定事件? 代码如下: $(document).bind("resize", function () { alert("php-note.com ...
- JQuery在循环中绑定事件的问题详解
JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...
- jQuery学习小结1-CSS操作+事件
一.DOM对象和jQuery 对象互换 1.jQuery对象 就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法.比如: $(&quo ...
- jquery html 动态添加元素绑定事件
由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数.我们知道,用Javascript向HTML文档中 插入内容,有两种方法, 一种是在写HTML代码写入JS,然后 ...
- jQuery相关方法7----各种事件和绑定事件
一.jQuery事件 1.鼠标事件 click与dbclick事件 click事件其实是由mousedown与mouseup 2个动作构成,所以点击的动作只有在松手后才触发 $ele.click(): ...
- jquery学习笔记(三):事件和应用
内容来自[汇智网]jquery学习课程 3.1 页面加载事件 在jQuery中页面加载事件是ready().ready()事件类似于就JavaScript中的onLoad()事件,但前者只要页面的DO ...
- [jquery]高级篇--js绑定事件
参考: http://www.cnblogs.com/leejersey/p/3545372.html jQuery on()方法是官方推荐的绑定事件的一个方法.$(selector).on(eve ...
随机推荐
- 安装windows7和ubuntu双系统后引导项设置
win7系统,U盘安装ubuntu,在选择[安装启动引导器的设备]时,1.如果你选择的是/dev/sda,即整个硬盘,他会将启动引导器使用grub进行系统引导,而不再使用windows loader, ...
- java中如何调用oracle存储过程
在java中使用CallableStatement调用存储过程 列: 创建需要的测试表:create table Test(tid varchar2(10),tname varchar2(10)): ...
- php 记住密码自动登录
当我们登录网站管理后台的时候,会有提示说记住登录状态,记住我等这样的提示,这个选项有什么用呢?如果选中了记登录状态后,下次在浏览这个网站后 台时就不用在填写用户名和密码了,在去登录了.下面写了一小代码 ...
- tcl/tk demo
环境及版本说明: OSX10.9 tclsh -> tclsh8.5 wish -> wish8.5 查看本机运行环境: which wish; 2 /usr/bin/wish which ...
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1.正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项, 例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12 (1).设计一个函数void ...
- oracle 创建表空间详细介绍
注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存 ...
- (八)boost库之异常处理
(八)boost库之异常处理 当你面对上千万行的项目时,当看到系统输出了异常信息时,你是否想过,如果它能将文件名.行号等信息输出,该多好啊,曾经为此绞尽脑汁. 今天使用boost库,将轻松的解决这个问 ...
- 我使用过的Linux命令之file - 检测并显示文件类型
摘自:http://codingstandards.iteye.com/blog/804463 我使用过的Linux命令之file - 检测并显示文件类型 用途说明 file命令是用来检测并显示文件类 ...
- #include <queue>
双端队列deque比向量vector更有优势 双端队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque> 队列(queue) 先进先出的值的排列 <queue&g ...
- Walking Ant(一道有意思的蚂蚁游戏,bfs)
Walking Ant Time Limit: 2 Seconds Memory Limit: 65536 KB Ants are quite diligent. They sometime ...