位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > JavaScript > 問(wèn)題詳情

JavaScript 注銷事件

提問(wèn)人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-27

■知識(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)資源。

繼續(xù)查找其他問(wèn)題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部