87,993
社区成员
发帖
与我相关
我的任务
分享<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
#div1{ width: 150px; height: 150px; border: solid 1px #333;}
</style>
</head>
<body>
<input id="btn1" type="button" value="删除事件" />
<div id="div1">click</div>
</body>
</html>
<script>
function bind(obj,event,fn,b){ // 绑定事件的封装?
obj.addEventListener
?obj.addEventListener(event,fn,b)
:obj.attachEvent("on"+event,function(){
fn.call(obj)
},b)
}
function unbind(obj,event,fn){
obj.addEventListener
?obj.removeEventListener(event,fn,false)
:obj.detachEvent("on"+event,fn)
}
window.onload = function(){
var oDiv = document.getElementById("div1")
var oBtn = document.getElementById("btn1")
bind(oDiv,"click",fn1)
bind(oBtn,"click",fn2)
function fn1(){
alert("这是一个点击事件")
}
function fn2(){
alert( "删除 oDiv的点击事件")
unbind(oDiv,"click",fn1)
}
/* IE6~IE8 无法删除?*/
}
</script>
var ieEvtKV = {};//ie用全局变量存储匿名函数才能解绑
function bind(obj, event, fn, b) { // 绑定事件的封装?
obj.addEventListener ? obj.addEventListener(event, fn, b)
: (ieEvtKV[fn.toString()] = function () { fn.call(obj) },
obj.attachEvent("on" + event, ieEvtKV[fn.toString()], b))
}
function unbind(obj, event, fn) {
obj.addEventListener
? obj.removeEventListener(event, fn, false)
:( obj.detachEvent("on" + event, ieEvtKV[fn.toString()]),delete ieEvtKV[fn.toString()])
}