10-事件對象


上篇介紹完我們js的事件流的概念之后,相信大家對事件流也有所了解了。那么接下來我們看一下jquery的事件操作。

 

在說jquery的每個事件之前,我們先來看一下事件對象

事件對象

Event 對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、鼠標的位置、鼠標按鈕的狀態。

  1. 什么時候會產生Event 對象呢? 

         例如: 當用戶單擊某個元素的時候,我們給這個元素注冊的事件就會觸發,該事件的本質就是一個函數,而該函數的形參接收一個event對象

       2.事件通常與函數結合使用,函數不會在事件發生前被執行!

 

事件流的由來(了解)

由於微軟和網景亂搞,后來必須要為事件傳播機制,制定一個標准,因為事件捕獲是網景公司開發出來的,而事件冒泡是由微軟公司開發出來的,它們都想要自己的技術成為標准,所以導致這兩個公司老是干架,制定標准的人為了不讓它們干架,所以研發了事件流.

 

關於event對象

  • 在觸發的事件的函數里面我們會接收到一個event對象,通過該對象我們需要的一些參數,比如說我們需要知道此事件作用到誰身上了,就可以通過event的屬性target來獲取到(IE暫且不談),或者想阻止瀏覽器的默認行為可以通過方法preventDefault()來進行阻止.以下是event對象的一些屬性和方法
屬性 描述
altKey 返回當事件被觸發時,”ALT” 是否被按下。
button 返回當事件被觸發時,哪個鼠標按鈕被點擊。
clientX 返回當事件被觸發時,鼠標指針的水平坐標。
clientY 返回當事件被觸發時,鼠標指針的垂直坐標。
ctrlKey 返回當事件被觸發時,”CTRL” 鍵是否被按下。
metaKey 返回當事件被觸發時,”meta” 鍵是否被按下。
relatedTarget 返回與事件的目標節點相關的節點。
screenX 返回當某個事件被觸發時,鼠標指針的水平坐標。
screenY 返回當某個事件被觸發時,鼠標指針的垂直坐標。
shiftKey 返回當事件被觸發時,”SHIFT” 鍵是否被按下
  • IE 屬性(除了上面的鼠標/事件屬性,IE 瀏覽器還支持下面的屬性)
屬性 描述
cancelBubble 如果事件句柄想阻止事件傳播到包容對象,必須把該屬性設為 true。
fromElement 對於 mouseover 和 mouseout 事件,fromElement 引用移出鼠標的元素。
keyCode 對於 keypress 事件,該屬性聲明了被敲擊的鍵生成的 Unicode 字符碼。對於 keydown 和 keyup
offsetX,offsetY 發生事件的地點在事件源元素的坐標系統中的 x 坐標和 y 坐標。
returnValue 如果設置了該屬性,它的值比事件句柄的返回值優先級高。把這個屬性設置為
srcElement 對於生成事件的 Window 對象、Document 對象或 Element 對象的引用。
toElement 對於 mouseover 和 mouseout 事件,該屬性引用移入鼠標的元素。
x,y 事件發生的位置的 x 坐標和 y 坐標,它們相對於用CSS動態定位的最內層包容元素。

 

 

  • 標准 Event 屬性 下面列出了 2 級 DOM 事件標准定義的屬性。
屬性和方法 描述
bubbles 返回布爾值,指示事件是否是起泡事件類型。
cancelable 返回布爾值,指示事件是否可擁可取消的默認動作。
currentTarget 返回其事件監聽器觸發該事件的元素。
eventPhase 返回事件傳播的當前階段。
target 返回觸發此事件的元素(事件的目標節點)。
timeStamp 返回事件生成的日期和時間。
type 返回當前 Event 對象表示的事件的名稱。
initEvent() 初始化新創建的 Event 對象的屬性。
preventDefault() 通知瀏覽器不要執行與事件關聯的默認動作。
stopPropagation() 不再派發事件。

Event對象的一些兼容性寫法(了解)

  • 獲得event對象兼容性寫法 
    event || (event = window.event);
  • 獲得target兼容型寫法 
    event.target||event.srcElement
  • 阻止瀏覽器默認行為兼容性寫法 
    event.preventDefault ? event.preventDefault() : (event.returnValue = false);
  • 阻止冒泡寫法 
    event.stopPropagation ? event.stopPropagation() : (event.cancelBubble = true);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM