JavaScript事件绑定的三种方式


(一)事件绑定的三种方式

(1)通过on的形式

<script type="text/javascript">
var div = document.getElementsByTagName('div')[0]; div.onclick = function(){
console.log('a');
}
</script>

 兼容性好,但是每个事件只能绑定一个处理函数;

(2)通过addEventListener形式

形式为obj.addEventListener(事件类型,处理函数,false)

<script type="text/javascript">
var div = document.getElementsByTagName('div')[0]; div.addEventListener('click',function(){
console.log('b');
},false);
</script>

 IE9以下版本不兼容;

还可以为一个事件绑定多个处理函数,如下示例:

<script type="text/javascript">
var div = document.getElementsByTagName('div')[0]; div.addEventListener('click',function(){
console.log('b');
},false);
div.addEventListener('click',function(){
console.log('c');
},false);
</script>

  JavaScript事件绑定的三种方式

(3)attachEvent

<script type="text/javascript">
var div = document.getElementsByTagName('div')[0]; div.attachEvent('onclick',function(){
console.log('c');
});
</script>

  IE独有;可以为一个事件绑定多个处理函数

 


(二)上述三种绑定时间的this问题

JavaScript事件绑定的三种方式

 1 <body>
2 <div style="width:100px;height:100px;background-color:green">
3
4 </div>
5 <script type="text/javascript">
6 var div = document.getElementsByTagName('div')[0];
7
8 function addEvent(elem,type,handle){
9 if(elem.addEventListener){
10 elem.addEventListener(type,handle,false);
11 }else if(add.attachEvent){
12 elem.attachEvent('on'+type,function(){
13 handle.call(elem);
14 });
15 }else{
16 elem['on' + type] = handle;
17 }
18 }
19 function handle(elem){
20 console.log(this);
21 }
22
23 addEvent(div,'click',handle);
24
25 </script>
26 </body>

JavaScript事件绑定的三种方式


(三)解除事件处理程序

JavaScript事件绑定的三种方式

如下函数功能实现只有点击第一次有效

 1 <body>
2 <div style="width:100px;height:100px;background-color:green">
3
4 </div>
5 <script type="text/javascript">
6 var div = document.getElementsByTagName('div')[0];
7
8 div.onclick = function (){
9 console.log('a');
10 this.onclick = null; //取消绑定事件
11 }
12 </script>
13 </body>

上一篇:Message Queue的使用目的


下一篇:linux 学习 12 服务管理