Tener en cuenta que Explorer usa attachEvent para agregar y detachEvent para desagregar.
Algo crossbrowser sería así:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
<script>
function $(id){return document.getElementById(id);}
function addEvent(obj, evType, fn, useCapture){
if(obj.addEventListener){
obj.addEventListener(evType, fn, useCapture);
}else if(obj.attachEvent){
obj.attachEvent("on"+evType, fn);
}else{
obj['on'+evType]=fn;
}
}
function removeEvent(obj, evType, fn, useCapture){
if (obj.removeEventListener){
obj.removeEventListener(evType, fn, useCapture);
} else if (obj.detachEvent){
obj.detachEvent("on"+evType, fn);
} else {
obj['on'+evType]=function(){};
}
}
function mostrar(e){
var e=e || window.event;
var obj=e.srcElement || e.target;
alert(obj.id);
}
function eliminarEvento(){
removeEvent($('adentro'), 'click', mostrar, false);
}
window.onload=function(){
addEvent($('adentro'), 'click', mostrar, false);
addEvent($('quitar'), 'click', eliminarEvento, false);
}
</script>
</head>
<body>
<div id="adentro">test</div>
<div id="quitar">quitar</div>
</body>
</html>
De esa manera, podemos usar addEvent para asignar un evento y removeEvent para eliminarlo.