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

JavaScript 注銷事件

提問人:劉團圓發(fā)布時間:2020-11-27

■知識點

在DOM事件模型中,使用removeEventListenerO方法可以從指定對象中刪除己經(jīng)注冊的事件監(jiān)聽函數(shù)。其用法如下:

    element.removeEventListener(String type, Function listener, boolean useCapture);

參數(shù)說明參閱addEventListener()方法參數(shù)說明。

在IE事件模型中,使用detachEvent()方法注銷事件。其用法如下:

    element.detachEvent(etype,eventName)

參數(shù)說明參閱attachEventO方法參數(shù)說明。

■實例設(shè)計

    下面的示例設(shè)計段落標簽<p>僅響應(yīng)一次光標經(jīng)過行為。當(dāng)?shù)?次光標經(jīng)過段落文本時,所注冊的事件不再有效。為了能夠兼容IE事件模型和DOM事件模型,使用if語句判斷當(dāng)前瀏覽器支持的事件處理模型,然后分別使用DOM注冊方法和IE注冊方法為段落文本注冊mouseover和mouseout兩個事件。當(dāng)觸發(fā)mouseout事件之后,再把mouseover和mouseout事件注銷掉。

<P id="p1">注冊兼容性事件</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()方法注冊的事件。如果使用onclick等直接寫在元素上的事件,將無法使用removeEventListener()方法刪除。

    當(dāng)臨時注冊一個事件時,可以在處理完畢之后迅速刪除它,這樣能夠節(jié)省系統(tǒng)資源。

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

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