jquery 事件物件屬性小結
使用事件自然少不了事件物件. 因為不同瀏覽器之間事件物件的獲取, 以及事件物件的屬性都有差異, 導致我們很難跨瀏覽器使用事件物件.
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() |
取消可能引起任何語意操作的事件. 比如<a>元素的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來取消冒泡。
相關文章
- jQuery事件物件event的屬性和方法jQuery事件物件
- jquery事件物件event常用屬性簡單介紹jQuery事件物件
- 理解物件以及物件的屬性、方法、事件 (轉)物件事件
- jQuery事件物件jQuery事件物件
- 連結a物件的pathname屬性物件
- jQuery 屬性jQuery
- jQuery屬性jQuery
- jQuery length屬性jQuery
- js物件屬性JS物件
- 物件不支援“addEventListener”屬性或方法 ie8 jquery物件devjQuery
- 10. IDENTITY屬性使用小結IDE
- 物件導向中Object常用屬性總結物件Object
- jQuery動態修改連結的href屬性值jQuery
- javascript擼來擼去(1)-事件監聽與物件屬性JavaScript事件物件
- jQuery設定disabled屬性與移除disabled屬性jQuery
- jQuery繫結事件jQuery事件
- javascript原型物件的屬性不能夠覆蓋物件自有屬性JavaScript原型物件
- GObject的物件屬性GoObject物件
- Object物件的屬性Object物件
- DataView物件buffer屬性View物件
- 修改物件私有屬性物件
- jQuery layout 外掛屬性jQuery
- jquery屬性選擇器jQuery
- Ajax的XMLHttpRequest物件的屬性和方法總結XMLHTTP物件
- React滑鼠點選事件物件中的幾個用到的屬性React事件物件
- Jquery小結jQuery
- CAD屬性編輯操作——物件屬性教程物件
- python物件屬性管理(2):property管理屬性Python物件
- 理解 JavaScript 物件的屬性JavaScript物件
- XMLHttpRequest物件的status屬性XMLHTTP物件
- XMLHttpRequest物件的responseXML屬性XMLHTTP物件
- jquery設定href屬性值jQuery
- jquery改變元素屬性值jQuery
- jquery對標籤屬性操作jQuery
- javascript基礎(物件,物件屬性,屬性基本和引用資料型別,字面量建立物件,垃圾回收,屬性的列舉)(十三)JavaScript物件資料型別
- Vue事件獲取觸發事件物件和繫結事件物件Vue事件物件
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- JavaScript物件的資料屬性與訪問器屬性JavaScript物件