<!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=utf-8" />
<title>无标题文档</title>
</head><body>
<p id="pro">ass</p>
</body>
<script language="javascript">function $(id){
return document.getElementById(id)
}var eventUtil={
addEventHandler:function(target,EventType,fnHandle){
if(target.attachEvent)
{
target.attachEvent("on"+EventType,function(){fnHandle.apply(target)});
}
else if(target.addEventListener)
{
target.addEventListener(EventType,fnHandle,false);
}
else
{
target["on"+EventType]=fnHandle
}
},
removeEventHandler:function(target,EventType,fnHandle){
if(target.detachEvent)
{
target.detachEvent("on"+EventType,fnHandle)
}
else if(target.removeEventListener)
{
target.removeEventListener(EventType,fnHandle,false)
}
else{
target["on"+EventType]=null
}
}
}
function a(){
alert(0)
eventUtil.removeEventHandler($("pro"),"click",a)
//$("pro").removeEventListener('click',a,false);
}eventUtil.addEventHandler($("pro"),"click",a)
</script>
</html>
我在p上绑定了一个click事件,在点击之后会移除这个事件,在FF、chorme中可以实现,但是在IE、opera中不能移除事件,请问这是为什么?怎么解决?

解决方案 »

  1.   

    var eventUtil={
        addEventHandler:function(target,EventType,fnHandle){
            if(target.attachEvent)
            {
               // target.attachEvent("on"+EventType,function(){fnHandle.apply(target)});
                 target.attachEvent("on"+EventType,fnHandle);
            }
            else if(target.addEventListener)
            {
                target.addEventListener(EventType,fnHandle,false);
            }
            else
            {
                target["on"+EventType]=fnHandle
            }
        },
      

  2.   

    attachEvent 和 detachEvent 中要用同一个函数名,要不然删不掉。
      

  3.   

    因为绑定的函数不能是匿名函数
     target.attachEvent("on"+EventType,function(){fnHandle.apply(target)});
    你移除的函数
    target.addEventListener(EventType,fnHandle,false);fnHandle!=function(){fnHandle.apply(target)}
    它们两完全不是一回事
      

  4.   

    <DIV id=people_detail src="/examples/jquery_jframes/people/detail/" 
          afterload="$('#people_detail').show('slow')" 
          beforeload="$('#people_detail').hide('slow')"></DIV>
    这有没有错啊?????