對(duì)于在頁(yè)面加載時(shí)就被加載的元素,我們可以直接使用下面代碼來(lái)為元素綁定事件
elementObject.onXXX = function(){}
但是對(duì)于頁(yè)面動(dòng)態(tài)新增的元素闷供,是沒(méi)有被綁定事件的氓辣,那么我們?nèi)绾螢檫@些新增元素綁定事件呢低剔?
1.通過(guò)addEventListener
在新元素被添加時(shí)為其綁定事件(不支持IE8及以下)
elementObject.addEventListener(eventName,handle,useCapture)
eventName是要綁定的事件薛夜,如click
,change
籍茧, handle是句柄,可以是myFunction()
却邓,也可以是匿名函數(shù)硕糊,直接寫(xiě)function(){}
,useCapture是
參數(shù) | 說(shuō)明 |
---|---|
elementObject | DOM對(duì)象(即DOM元素) |
eventName | 綁定的事件腊徙,如click ,change 简十,不需要on
|
handle | 句柄,即用來(lái)處理事件的函數(shù)撬腾∶可以是函數(shù)名myFunction ,也可以是匿名函數(shù)民傻,直接寫(xiě)function(){}
|
useCapture | Boolean類(lèi)型胰默,是否使用捕獲,一般用false 漓踢。 |
兼容性 | addEventListener()是標(biāo)準(zhǔn)的綁定事件監(jiān)聽(tīng)函數(shù)的方法牵署,是W3C所支持的,Chrome喧半、FireFox奴迅、Opera、Safari挺据、IE9.0及其以上版本都支持該函數(shù)取具;但是,IE8.0及其以下版本不支持該方法扁耐,它使用attachEvent()來(lái)綁定事件監(jiān)聽(tīng)函數(shù)暇检。所以,這種綁定事件的方法必須要處理瀏覽器兼容問(wèn)題婉称。 |
*注意:事件句柄函數(shù)是指“ 函數(shù)名 ”块仆,不能帶小括號(hào)。
2.通過(guò)attachEvent
在新元素被添加時(shí)為其綁定事件(支持IE)
element.Object.attachEvent(eventName,handle)
參數(shù) | 說(shuō)明 |
---|---|
elementObject | DOM對(duì)象(即DOM元素) |
eventName | 事件名稱(chēng)王暗。注意榨乎,與addEventListener()不同,這里的事件名稱(chēng)有“ on ”瘫筐,如鼠標(biāo)單擊事件 onclick ,鼠標(biāo)雙擊事件 ondoubleclick 铐姚,鼠標(biāo)移入事件 onmouseover策肝,鼠標(biāo)移出事件 onmouseout 等肛捍。 |
handle | 事件句柄函數(shù),即用來(lái)處理事件的函數(shù)之众。 |
所以如果要兼容IE8及以下瀏覽器拙毫,則可以使用這樣的方法
function addEvent(obj,type,handle){
try{ // Chrome、FireFox棺禾、Opera缀蹄、Safari、IE9.0及其以上版本
obj.addEventListener(type,handle,false)
}catch(e){
// IE8.0及其以下版本
try{
obj.attachEvent('on' + type,handle);
}catch{
}
}
}