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 相关文章推荐
JavaScript对象学习经验整理
Oct 12 Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
Aug 05 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
Vue表单验证插件Vue Validator使用方法详解
Apr 07 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 Javascript
解决vue+elementui项目打包后样式变化问题
Aug 03 Javascript
详解Vite的新体验
Feb 22 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
jquery禁用右键示例
2014/04/28 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vuex的简单使用教程
2018/02/02 Javascript
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
Vue实现日历小插件
2019/06/26 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
python模块restful使用方法实例
2013/12/10 Python
python中的函数用法入门教程
2014/09/02 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
移动端html5模拟长按事件的实现方法
2018/09/30 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
市场营销求职信范文
2014/02/21 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript