jquery 事件對(duì)象屬性小結(jié)
使用事件自然少不了事件對(duì)象. 因?yàn)椴煌瑸g覽器之間事件對(duì)象的獲取, 以及事件對(duì)象的屬性都有差異, 導(dǎo)致我們很難跨瀏覽器使用事件對(duì)象.
jQuery中統(tǒng)一了事件對(duì)象, 當(dāng)綁定事件處理函數(shù)時(shí), 會(huì)將jQuery格式化后的事件對(duì)象作為唯一參數(shù)傳入:
$("#testDiv").bind("click", function(event) { });
關(guān)于event對(duì)象的詳細(xì)說(shuō)明, 可以參考jQuery官方文檔: http://docs.jquery.com/Events/jQuery.Event
jQuery事件對(duì)象將不同瀏覽器的差異進(jìn)行了合并, 比如可以在所有瀏覽器中通過(guò) event.target 屬性來(lái)獲取事件的觸發(fā)者(在IE中使用原生的事件對(duì)象, 需要訪問event.srcElement).
下面是jQuery事件對(duì)象可以在擴(kuò)瀏覽器支持的屬性:
| 屬性名稱 | 描述舉例 |
| type | 事件類型.如果使用一個(gè)事件處理函數(shù)來(lái)處理多個(gè)事件, 可以使用此屬性獲得事件類型,比如click. $("a").click(function(event) {
alert(event.type);
}); |
| target | 獲取事件觸發(fā)者DOM對(duì)象 $("a[href=http://google.com]").click(function(event) {
alert(event.target.href);
}); |
| data | 事件調(diào)用時(shí)傳入額外參數(shù). $("a").each(function(i) {
$(this).bind('click', {index:i}, function(e){
alert('my index is ' + e.data.index);
});
}); |
| relatedTarget | 對(duì)于鼠標(biāo)事件, 標(biāo)示觸發(fā)事件時(shí)離開或者進(jìn)入的DOM元素 $("a").mouseout(function(event) {
alert(event.relatedTarget);
}); |
| currentTarget | 冒泡前的當(dāng)前觸發(fā)事件的DOM對(duì)象, 等同于this. $("p").click(function(event) {
alert( event.currentTarget.nodeName );
});
結(jié)果:P |
| pageX/Y | 鼠標(biāo)事件中, 事件相對(duì)于頁(yè)面原點(diǎn)的水平/垂直坐標(biāo). $("a").click(function(event) {
alert("Current mouse position: " + event.pageX + ", " + event.pageY );
}); |
| result | 上一個(gè)事件處理函數(shù)返回的值 $("p").click(function(event) {
return "hey"
});
$("p").click(function(event) {
alert( event.result );
});
結(jié)果:”hey” |
| timeStamp | 事件發(fā)生時(shí)的時(shí)間戳. var last;
$("p").click(function(event) {
if( last )
alert( "time since last event " + event.timeStamp - last );
last = event.timeStamp;
}); |
上面是jQuery官方文檔中提供的event對(duì)象的屬性. 在”jQuery實(shí)戰(zhàn)”一書中還提供了下面的多瀏覽器支持的屬性, 時(shí)間關(guān)系我沒有嘗試每一個(gè)屬性, 大家可以幫忙驗(yàn)證是否在所有瀏覽器下可用:
| 屬性名稱 | 描述 |
| altKey | Alt鍵是否被按下. 按下返回true |
| ctrlKey | ctrl鍵是否被按下, 按下返回true |
| metaKey | Meta鍵是否被按下, 按下返回true. meta鍵就是PC機(jī)器的Ctrl鍵,或者M(jìn)ac機(jī)器上面的Command鍵 |
| shiftKey | Shift鍵是否被按下, 按下返回true |
| keyCode | 對(duì)于keyup和keydown事件返回被按下的鍵. 不區(qū)分大小寫, a和A都返回65.對(duì)于keypress事件請(qǐng)使用which屬性, 因?yàn)閣hich屬性跨瀏覽時(shí)依然可靠. |
| which | 對(duì)于鍵盤事件, 返回觸發(fā)事件的鍵的數(shù)字編碼. 對(duì)于鼠標(biāo)事件, 返回鼠標(biāo)按鍵號(hào)(1左,2中,3右). |
| screenX/Y | 對(duì)于鼠標(biāo)事件, 獲取事件相對(duì)于屏幕原點(diǎn)的水平/垂直坐標(biāo) |
事件對(duì)象除了擁有屬性, 還擁有事件. 有一些是一定會(huì)用到的事件比如取消冒泡 stopPropagation() 等.下面是jQuery事件對(duì)象的函數(shù)列表:
| 名稱 | 說(shuō)明舉例 |
| preventDefault() | 取消可能引起任何語(yǔ)意操作的事件. 比如<a>元素的href鏈接加載, 表單提交以及click引起復(fù)選框的狀態(tài)切換. $("a").click(function(event){
event.preventDefault();
// do something
}); |
| isDefaultPrevented() | 是否調(diào)用過(guò)
preventDefault() 方法 $("a").click(function(event){
alert( event.isDefaultPrevented() );
event.preventDefault();
alert( event.isDefaultPrevented() );
}); |
| stopPropagation() | 取消事件冒泡 $("p").click(function(event){
event.stopPropagation();
// do something
}); |
| isPropagationStopped() | 是否調(diào)用過(guò)
stopPropagation() 方法 $("p").click(function(event){
alert( event.isPropagationStopped() );
event.stopPropagation();
alert( event.isPropagationStopped() );
}); |
| stopImmediatePropagation() | 取消執(zhí)行其他的事件處理函數(shù)并取消事件冒泡.如果同一個(gè)事件綁定了多個(gè)事件處理函數(shù), 在其中一個(gè)事件處理函數(shù)中調(diào)用此方法后將不會(huì)繼續(xù)調(diào)用其他的事件處理函數(shù). $("p").click(function(event){
event.stopImmediatePropagation();
});
$("p").click(function(event){
// This function won't be executed
}); |
| isImmediatePropagationStopped() | 是否調(diào)用過(guò)
stopImmediatePropagation() 方法 $("p").click(function(event){
alert( event.isImmediatePropagationStopped() );
event.stopImmediatePropagation();
alert( event.isImmediatePropagationStopped() );
}); |
這些函數(shù)中 stopPropagation() 是我們最長(zhǎng)用的也是一定會(huì)用到的函數(shù). 相當(dāng)于操作原始event對(duì)象的event.cancelBubble=true來(lái)取消冒泡.
- 使用jquery選擇器如何獲取父級(jí)元素、同級(jí)元素、子元素
- jquery選擇器之屬性過(guò)濾選擇器詳解
- Jquery選擇器中使用變量實(shí)現(xiàn)動(dòng)態(tài)選擇例子
- jquery選擇器排除某個(gè)DOM元素的方法(實(shí)例演示)
- JQuery中$之選擇器用法介紹
- jQuery 獲取對(duì)象 根據(jù)屬性、內(nèi)容匹配, 還有表單元素匹配
- Jquery 獲取指定標(biāo)簽的對(duì)象及屬性的設(shè)置與移除
- jQuery表單對(duì)象屬性過(guò)濾選擇器實(shí)例詳解
- jquery中event對(duì)象屬性與方法小結(jié)
- Jquery中Event對(duì)象屬性小結(jié)
- jquery選擇器和屬性對(duì)象的操作實(shí)例分析
相關(guān)文章
Jquery全屏相冊(cè)插件zoomvisualizer具有調(diào)節(jié)放大與縮小功能
本文給大家分享一款經(jīng)常使用的jquery全屏相冊(cè)插件zoomvisualizer具有調(diào)節(jié)放大與縮小的功能,對(duì)jquery全屏相冊(cè)插件zoomvisualizer感興趣的朋友可以通過(guò)本文學(xué)習(xí)一下2015-11-11
jquery調(diào)取json數(shù)據(jù)實(shí)現(xiàn)省市級(jí)聯(lián)的方法
這篇文章主要介紹了jquery調(diào)取json數(shù)據(jù)實(shí)現(xiàn)省市級(jí)聯(lián)的方法,可實(shí)現(xiàn)讀取json數(shù)據(jù)綁定到下拉菜單的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-01-01
jQuery中的pushStack實(shí)現(xiàn)原理和應(yīng)用實(shí)例
這篇文章主要介紹了jQuery中的pushStack實(shí)現(xiàn)原理和應(yīng)用實(shí)例,pushStack是jQuery內(nèi)核中一個(gè)非常重要的函數(shù),許多jQuery內(nèi)部函數(shù)中都頻繁用到它,掌握這個(gè)函數(shù),有利于理解jQuery的運(yùn)行原理,需要的朋友可以參考下2015-02-02
jQuery slider Content(左右控制移動(dòng))
jQuery slider Content(左右控制移動(dòng))實(shí)現(xiàn)代碼,大家可以參考下。2009-09-09
jQuery中調(diào)用WebService方法小結(jié)
以前在寫ajax請(qǐng)求時(shí),總是喜歡使用jQuery+ashx的方式進(jìn)行調(diào)用,今天采取jQuery+WebService的方法來(lái)做ajax請(qǐng)求,發(fā)現(xiàn)這種方式比使用ashx的方式要更方便。2011-03-03
jquery事件機(jī)制擴(kuò)展插件 jquery鼠標(biāo)右鍵事件
jquery其實(shí)本身的事件機(jī)制就很完善了,包括了單擊,雙擊,鼠標(biāo)移入,鼠標(biāo)移出等。但是卻少了一個(gè)做事件。就是鼠標(biāo)右擊事件。當(dāng)然大家也是直接用偵聽鼠標(biāo)按下事件,然后通過(guò)if來(lái)判斷執(zhí)行相應(yīng)的函數(shù)。造成鼠標(biāo)右擊事件的效果2011-12-12
jquery 圓形旋轉(zhuǎn)圖片滾動(dòng)切換效果
今回給大家介紹個(gè)圓形旋轉(zhuǎn)的效果,基于圓形的物理特性,又圓上任意一點(diǎn)可以作為一個(gè)控制按鈕,然后拖動(dòng)它來(lái)使圖片輪換。2011-01-01

