function AttachEvent(type, target, handler, owner)
{
var eventHandler = handler;
if(owner)
{
// 在这里重新定义一个处理函数
eventHander = function(e)
{
handler.call(owner, e);
}
}
if(window.document.all)
target.attachEvent("on" + type, eventHander );
else
target.addEventListener(type, eventHander, false); //注意这里第一个参数是click而不是onclick
}
这段代码 是我从网上看到的 虽然不是很明白 但一直用着挺好用的可是最近遇到个问题,在用这个方法对对象进行绑定事件之后,在解除事件时 就遇到问题了,个人理解是 在绑定时 由于我都传入了owner这个参数 于是他又对事件进行了 处理 这样绑定上的并不是 传入的那个handler于是乎解除时变失灵了哪位告示指点一下小弟呀 我想要的结果是 用这个绑定事件 并能有对应的解除事件方法
谢谢了
{
var eventHandler = handler;
if(owner)
{
// 在这里重新定义一个处理函数
eventHander = function(e)
{
handler.call(owner, e);
}
}
if(window.document.all)
target.attachEvent("on" + type, eventHander );
else
target.addEventListener(type, eventHander, false); //注意这里第一个参数是click而不是onclick
}
这段代码 是我从网上看到的 虽然不是很明白 但一直用着挺好用的可是最近遇到个问题,在用这个方法对对象进行绑定事件之后,在解除事件时 就遇到问题了,个人理解是 在绑定时 由于我都传入了owner这个参数 于是他又对事件进行了 处理 这样绑定上的并不是 传入的那个handler于是乎解除时变失灵了哪位告示指点一下小弟呀 我想要的结果是 用这个绑定事件 并能有对应的解除事件方法
谢谢了
{
var eventHandler = handler;
if(owner)
{
// 在这里重新定义一个处理函数
eventHander = function(e)
{
handler.call(owner, e);
}
}
if(window.document.all)
target.attachEvent("on" + type, eventHander );
else
target.addEventListener(type, eventHander, false); //注意这里第一个参数是click而不是onclick
return(eventHander);
}
var re=AttachEvent('click',document.body,function() {alert("") },1);
document.body.detachEvent('onclick',re);
var r2=AttachEvent('click',document.body,function() {alert("b") },1);
document.body.detachEvent('onclick',r1);
document.body.detachEvent('onclick',r2);
不过要保存每个添加的事件返回的eventHander
document.getElementById("test").onclick = null;
if(window.document.all)
target.attachEvent("on" + type, eventHander );
else
target.addEventListener(type, eventHander, false);这段函数本来就是用来区分ie和ff等浏览器进行分别处理的,还用google么另外=null不能取出attachEvent addEventListener添加的函数