問(wèn)題由來(lái)
經(jīng)常在閱讀代碼時(shí)候發(fā)現(xiàn)這樣的函數(shù)
var btn = document.getElementById('btn');
btn.onclick = function (e) {
...一些操作;
}
$("#btn").on('click',function(event){
...一些操作;
});
//參數(shù)e有時(shí)候也會(huì)寫作event,這個(gè)參數(shù)究竟是什么?
問(wèn)題解釋
實(shí)際上這個(gè)東西叫做 事件對(duì)象,關(guān)于它的定義:
在觸發(fā)DOM上的某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象 event,這個(gè)對(duì)象中包含著所有與事件有關(guān)的信息。
所有的瀏覽器都支持event
對(duì)象但是不同的瀏覽器下的表現(xiàn)是不同的,沒(méi)錯(cuò),分為IE和其他兩種...
1.DOM中的event
event
對(duì)象的部分屬性和方法
屬性/方法 | 說(shuō)明 |
---|---|
currentTarget | 正在處理事件的元素 |
target | 事件的目標(biāo)(觸發(fā)事件的元素) |
preventDefault() | 取消事件的默認(rèn)行為 |
stopPropagation() | 取消事件的進(jìn)一步捕獲或冒泡 |
type | 被觸發(fā)的事件類型 |
需要注意的是currentTarget
和target
屬性,如果觸發(fā)事件的元素就是綁定了DOM事件的元素的話,它們就是一致的,但是在某些情況下,它們并不一樣。
例如:
**html**
<button id='body'>點(diǎn)擊body</button>
**js**
var body = document.getElementsByTagName('body')[0];
body.onclick = function(e){
console.log(e.target.tagName,e.currentTarget.tagName)
}
>"BUTTON" "BODY"
//觸發(fā)事件的是Button元素,處理事件的是Body元素
2.IE中的event
同樣的,IE中的event
對(duì)象也有一些屬性和方法,這里特指<=IE8
以下的只支持事件捕獲的瀏覽器版本。
屬性/方法 | 說(shuō)明 |
---|---|
cancelBubble | 布爾值,默認(rèn)為false ,設(shè)置為true 可以取消事件冒泡 |
returnValue | 布爾值,默認(rèn)為true ,設(shè)置為false 取消事件默認(rèn)行為 |
srcElement | 事件的目標(biāo)(觸發(fā)事件的元素) |
type | 被觸發(fā)的事件類型 |