事件處理(事件對象、目標元素的獲取,事件對象的屬性、方法等)在不同瀏覽器之間存在差異,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是否被調用過了