JavaScript 注銷事件
■知識(shí)點(diǎn)
在DOM事件模型中,使用removeEventListenerO方法可以從指定對(duì)象中刪除己經(jīng)注冊(cè)的事件監(jiān)聽(tīng)函數(shù)。其用法如下:
element.removeEventListener(String type, Function listener, boolean useCapture);
參數(shù)說(shuō)明參閱addEventListener()方法參數(shù)說(shuō)明。
在IE事件模型中,使用detachEvent()方法注銷事件。其用法如下:
element.detachEvent(etype,eventName)
參數(shù)說(shuō)明參閱attachEventO方法參數(shù)說(shuō)明。
■實(shí)例設(shè)計(jì)
下面的示例設(shè)計(jì)段落標(biāo)簽<p>僅響應(yīng)一次光標(biāo)經(jīng)過(guò)行為。當(dāng)?shù)?次光標(biāo)經(jīng)過(guò)段落文本時(shí),所注冊(cè)的事件不再有效。為了能夠兼容IE事件模型和DOM事件模型,使用if語(yǔ)句判斷當(dāng)前瀏覽器支持的事件處理模型,然后分別使用DOM注冊(cè)方法和IE注冊(cè)方法為段落文本注冊(cè)mouseover和mouseout兩個(gè)事件。當(dāng)觸發(fā)mouseout事件之后,再把mouseover和mouseout事件注銷掉。
<P id="p1">注冊(cè)兼容性事件</p>
<script>
var p1 = document.getElementByld("pi");
var f1 = function(){
p1.style.background = 'blue';
};
var f2 = function(){
p1.style.background = 'red';
if(p1.detachEvent){
p1.detachEvent("onmouseover", fl);
p1.detachEvent("onmouseout", f2);
}
else{
p1.removeEventListener("mouseover", fl);
p1.removeEventListener("mouseout", f2);
if(p1.attachEvent){
p1.attachEvent("onmouseover", f1);
p1.attachEvent("onmouseout", f2);
}
else {
p1.addEventListener("mouseover", f1);
p1.addEventListener("mouseout", f2);
}
</script>
removeEventListener()方法只能夠刪除addEventListener()方法注冊(cè)的事件。如果使用onclick等直接寫(xiě)在元素上的事件,將無(wú)法使用removeEventListener()方法刪除。
當(dāng)臨時(shí)注冊(cè)一個(gè)事件時(shí),可以在處理完畢之后迅速刪除它,這樣能夠節(jié)省系統(tǒng)資源。
點(diǎn)擊加載更多評(píng)論>>