事件处理(事件对象、目标元素的获取,事件对象的属性、方法等)在不同浏览器之间存在差异,jQuery在遵循W3C规范的情况下做了封装统一
一、事件对象常用的属性:
- event.type:获取事件的类型,触发元素的事件类型
$("a").click(function(event) { alert(event.type); // "click"事件 });
- event.pageX 和 event.pageY:获取鼠标当前相对于页面的坐标,可以确定元素在当前页面的坐标值,是以页面为参考点,不随滑动条移动而变化
$("a").click(function(event) { alert("Current mouse position: " + event.pageX + ", " + event.pageY ); return false; });
- event.target:获取触发事件的元素
this和event.target的区别:
js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事件的目标DOM元素;
this和event.target都是dom对象,可以转换为jquery对象:$(this)和$(event.target)
$("a[href=http://www.baidu.com]").click(function(event) { alert(event.target.href); return false; });
- event.which:获取在鼠标单击事件中鼠标的左、中、右键(左键1,中间键2,右键3),在键盘事件中键盘的键码值
$("a").mousedown(function(e){ alert(e.which); return false; })
- event.currentTarget : 获取冒泡前的当前触发事件的DOM对象, 等同于this
二、事件对象常用的方法:
- event.preventDefault() :阻止默认行为,可以用 event.isDefaultPrevented() 来确定preventDefault是否被调用过了
- event.stopPropagation() :阻止事件冒泡,事件是可以冒泡的,为防止事件冒泡到DOM树上,不触发任何前辈元素上的事件处理函数,可以用 event.isPropagationStopped() 来确定stopPropagation是否被调用过了