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 相关文章推荐
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
May 28 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
详解基于angular路由的requireJs按需加载js
Jan 20 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
VUE 自定义组件模板的方法详解
Aug 30 Javascript
JavaScript JSON使用原理及注意事项
Jul 30 Javascript
如何将JavaScript将数组转为树形结构
Jun 02 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
浅析SVN常见问题及解决方法
2013/06/21 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
js滚动条多种样式,推荐
2007/02/05 Javascript
Prototype Function对象 学习
2009/07/12 Javascript
a标签的href和onclick 的事件的区别介绍
2013/07/26 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
Python中内置的日志模块logging用法详解
2016/07/12 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
python实战教程之自动扫雷
2018/07/13 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Series和DataFrame使用简单入门
2019/11/13 Python
python 多进程队列数据处理详解
2019/12/23 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
经典演讲稿范文
2013/12/30 职场文书
法律专业自荐信
2014/06/03 职场文书
刑事和解协议书范本
2014/11/19 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
美术教师求职信范文
2015/03/20 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
Python语言内置数据类型
2022/02/24 Python