JavaScript 注销事件
■知识点
在DOM事件模型中,使用removeEventListenerO方法可以从指定对象中删除己经注册的事件监听函数。其用法如下:
element.removeEventListener(String type, Function listener, boolean useCapture);
参数说明参阅addEventListener()方法参数说明。
在IE事件模型中,使用detachEvent()方法注销事件。其用法如下:
element.detachEvent(etype,eventName)
参数说明参阅attachEventO方法参数说明。
■实例设计
下面的示例设计段落标签<p>仅响应一次光标经过行为。当第2次光标经过段落文本时,所注册的事件不再有效。为了能够兼容IE事件模型和DOM事件模型,使用if语句判断当前浏览器支持的事件处理模型,然后分别使用DOM注册方法和IE注册方法为段落文本注册mouseover和mouseout两个事件。当触发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()方法删除。
当临时注册一个事件时,可以在处理完毕之后迅速删除它,这样能够节省系统资源。
点击加载更多评论>>