jquery 事件对象属性小结


Posted in Javascript onApril 27, 2010

使用事件自然少不了事件对象.  因为不同浏览器之间事件对象的获取, 以及事件对象的属性都有差异, 导致我们很难跨浏览器使用事件对象.

jQuery中统一了事件对象,  当绑定事件处理函数时,  会将jQuery格式化后的事件对象作为唯一参数传入:

$("#testDiv").bind("click", function(event) { });

关于event对象的详细说明, 可以参考jQuery官方文档: http://docs.jquery.com/Events/jQuery.Event

jQuery事件对象将不同浏览器的差异进行了合并, 比如可以在所有浏览器中通过 event.target 属性来获取事件的触发者(在IE中使用原生的事件对象, 需要访问event.srcElement).

下面是jQuery事件对象可以在扩浏览器支持的属性:

属性名称 描述举例
type 事件类型.如果使用一个事件处理函数来处理多个事件, 可以使用此属性获得事件类型,比如click. $("a").click(function(event) { alert(event.type); });
target 获取事件触发者DOM对象 $("a[href=http://google.com]").click(function(event) { alert(event.target.href); });
data 事件调用时传入额外参数. $("a").each(function(i) { $(this).bind('click', {index:i}, function(e){ alert('my index is ' + e.data.index); }); });
relatedTarget 对于鼠标事件, 标示触发事件时离开或者进入的DOM元素 $("a").mouseout(function(event) { alert(event.relatedTarget); });
currentTarget 冒泡前的当前触发事件的DOM对象, 等同于this. $("p").click(function(event) { alert( event.currentTarget.nodeName ); }); 结果:P
pageX/Y 鼠标事件中, 事件相对于页面原点的水平/垂直坐标. $("a").click(function(event) { alert("Current mouse position: " + event.pageX + ", " + event.pageY ); });
result 上一个事件处理函数返回的值 $("p").click(function(event) { return "hey" }); $("p").click(function(event) { alert( event.result ); }); 结果:”hey”
timeStamp 事件发生时的时间戳. var last; $("p").click(function(event) { if( last ) alert( "time since last event " + event.timeStamp - last ); last = event.timeStamp; });

上面是jQuery官方文档中提供的event对象的属性. 在”jQuery实战”一书中还提供了下面的多浏览器支持的属性, 时间关系我没有尝试每一个属性, 大家可以帮忙验证是否在所有浏览器下可用:

属性名称 描述
altKey Alt键是否被按下. 按下返回true
ctrlKey ctrl键是否被按下, 按下返回true
metaKey Meta键是否被按下, 按下返回true.meta键就是PC机器的Ctrl键,或者Mac机器上面的Command键
shiftKey Shift键是否被按下, 按下返回true
keyCode 对于keyup和keydown事件返回被按下的键. 不区分大小写, a和A都返回65.对于keypress事件请使用which属性, 因为which属性跨浏览时依然可靠.
which 对于键盘事件, 返回触发事件的键的数字编码. 对于鼠标事件, 返回鼠标按键号(1左,2中,3右).
screenX/Y 对于鼠标事件, 获取事件相对于屏幕原点的水平/垂直坐标

 

事件对象除了拥有属性, 还拥有事件. 有一些是一定会用到的事件比如取消冒泡 stopPropagation() 等.下面是jQuery事件对象的函数列表:

名称 说明举例
preventDefault() 取消可能引起任何语意操作的事件. 比如元素的href链接加载, 表单提交以及click引起复选框的状态切换. $("a").click(function(event){ event.preventDefault(); // do something });
isDefaultPrevented() 是否调用过  preventDefault() 方法 $("a").click(function(event){ alert( event.isDefaultPrevented() ); event.preventDefault(); alert( event.isDefaultPrevented() ); });
stopPropagation() 取消事件冒泡 $("p").click(function(event){ event.stopPropagation(); // do something });
isPropagationStopped() 是否调用过  stopPropagation() 方法 $("p").click(function(event){ alert( event.isPropagationStopped() ); event.stopPropagation(); alert( event.isPropagationStopped() ); });
stopImmediatePropagation() 取消执行其他的事件处理函数并取消事件冒泡.如果同一个事件绑定了多个事件处理函数, 在其中一个事件处理函数中调用此方法后将不会继续调用其他的事件处理函数. $("p").click(function(event){ event.stopImmediatePropagation(); }); $("p").click(function(event){ // This function won't be executed });
isImmediatePropagationStopped() 是否调用过  stopImmediatePropagation() 方法 $("p").click(function(event){ alert( event.isImmediatePropagationStopped() ); event.stopImmediatePropagation(); alert( event.isImmediatePropagationStopped() ); });

这些函数中  stopPropagation()  是我们最长用的也是一定会用到的函数. 相当于操作原始event对象的event.cancelBubble=true来取消冒泡.

Javascript 相关文章推荐
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
JavaScript 常见对象类创建代码与优缺点分析
Dec 07 Javascript
JavaScript基础教程之alert弹出提示框实例
Oct 16 Javascript
认识Knockout及如何使用Knockout绑定上下文
Dec 25 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
Javascript中document.referrer隐藏来源的方法
Jan 16 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 Javascript
Google排名中的10个最著名的 JavaScript库
Apr 27 #Javascript
基于jquery的让页面控件不可用的实现代码
Apr 27 #Javascript
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 #Javascript
JavaScript中常见陷阱小结
Apr 27 #Javascript
javascript 动态修改样式和层叠样式表代码
Apr 27 #Javascript
js 绑定带参数的事件以及手动触发事件
Apr 27 #Javascript
javascript 模式设计之工厂模式学习心得
Apr 27 #Javascript
You might like
PHP 一个随机字符串生成代码
2010/05/26 PHP
php生成EAN_13标准条形码实例
2013/11/13 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
如何打开php的gd2库
2017/02/09 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
ExtJS 入门
2010/10/29 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
深入理解vue中的$set
2017/06/01 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
用vue写一个日历
2020/11/02 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python星号*与**用法分析
2018/02/02 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
详解python中docx库的安装过程
2019/11/08 Python
python手写均值滤波
2020/02/19 Python
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
班级课外活动总结
2014/07/09 职场文书
遗失说明具结保证书
2015/02/26 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers