js事件绑定与移除

blueweiwei 2010-08-09 09:54:01

<!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中不能移除事件,请问这是为什么?怎么解决?
...全文
952 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yankunlin 2010-08-09
  • 打赏
  • 举报
回复
<DIV id=people_detail src="/examples/jquery_jframes/people/detail/"
afterload="$('#people_detail').show('slow')"
beforeload="$('#people_detail').hide('slow')"></DIV>
这有没有错啊?????
guilipan 2010-08-09
  • 打赏
  • 举报
回复
因为绑定的函数不能是匿名函数
target.attachEvent("on"+EventType,function(){fnHandle.apply(target)});
你移除的函数
target.addEventListener(EventType,fnHandle,false);

fnHandle!=function(){fnHandle.apply(target)}
它们两完全不是一回事
2010-08-09
  • 打赏
  • 举报
回复
attachEvent 和 detachEvent 中要用同一个函数名,要不然删不掉。
vvviop 2010-08-09
  • 打赏
  • 举报
回复


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
}
},


yuan1238 2010-08-09
  • 打赏
  • 举报
回复
应该是参数的传递吧!
用调试工具看看吧!

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧