jQuery事件-事件對象

jQuery的事件系統根據W3c的標準正常化了事件對象。這個事件對象被保證傳遞給事件執行者。大多數屬性被從原始事件中複製並正常化到新的事件對象上。


jQuery.Event構造器

jQuery.Event構造器是開放的(exposed),當調用trigger時,就可以使用的。new操作符是可選的。
可以查看trigger的文檔,如何將它和你的事件對象結合起來。
如:
//Create a new jQuery.Event object without the "new" operator.
var e = jQuery.Event("click");
// trigger an artificial click event
jQuery("body").trigger( e );
jQuery1.6中你可以傳遞一個對象給jQuery.Event(),並且它的屬性會被在新創建的事件對象上創建。
如:

// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });
// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );

事件屬性
jQuery爲跨平臺的一致性正常化了下面的屬性:targetrelated Target pageX pageY which metaKey.

如下的屬性也會被複制到事件對象上,即使他們的一些值會是undefined而取決於該事件:
altKey, bubbles, button, cancelable, charCode, clientX, clientY, ctrlKey, currentTarget, data, detail, eventPhase, metaKey, offsetX, offsetY, originalTarget, pageX, pageY, prevValue, relatedTarget, screenX, screenY, shiftKey, target, view, which

其他屬性

一些事件也許會有特定的屬性。這些可以通過event.originalEvent對象將其作爲屬性來訪問。
如讓特殊的屬性能夠適合所有的事件對象,他們能被添加到jQuery.event.props的數組中。這是不推薦的,因爲它爲每一個事件增加了開銷。
如:

  // add the dataTransfer property for use with the native `drop` event
  // to capture information about files dropped into the browser window
  jQuery.event.props.push("dataTransfer");



event.currentTarget

事件發生的當前元素
這個屬性典型的和函數的this相同
如果你在使用jQuery.proxy或者其他的範圍的操作,this和你提供的任何上下文(context)都相同,event.currentTarget卻不是。

$("p").click(function(event) {
  alert( event.currentTarget === this ); // true
});

event.data

噹噹前執行的處理者被綁定,可選的對象data可傳遞給事件方法

event.delegateTarget

當前被調用的jQuery事件句柄被附加的地方

event.isDefaultPrevented()

返回判斷event.preventDefault()是否在該事件對象上被調用

event.isImmediatePropagationStopped()

返回判斷event.stopImmediatePropagation()是否在該事件對象上被調用

event.isPropagationStopped()

返回判斷event.stopPropagation()是否在該事件對象上被調用

event.metaKey
指示判斷META鍵是否被按下

event.namespace

當事件被觸發時指定的namespace

event.pageX
光標相對文檔的左邊緣的位置

event.pageY
光標相對文檔的上邊緣的位置

event.preventDefault()

該方法是夠被調用,事件默認的動作不會被觸發

event.relatedTarget

在事件中涉及的其他DOM元素,如果有的話

event.result

被該事件觸發的由事件句柄返回的最後的值,除非該值爲undefined

event.stopImmediatePropagation()

將其他的處理程序不被執行,阻止事件產生DOM樹的冒泡

event.stopPropagation()

阻止事件產生DOM樹的冒泡,並且阻止任何父句柄被該事件通知

event.target

初始化該事件的DOM元素

event.timeStamp

返回瀏覽器創建該事件的時間和1970-01-01的差值的毫秒形式

event.type

描述事件的類型

event.which

對於按鍵和鼠標事件,這個屬性會指明被點擊的具體的按鍵或者button

發佈了4 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章