关于前段蛋疼的地方之 IE 和网景 的缠缠绵绵 - 事件篇(1)

 

你知道前端的事件绑定机制在不同浏览器直接的区别吗? by 面试官

我知道

$('#btn').click(function(){alert('hello world')})

事件绑定是啥,好吃吗? by 小白程序猿

 

这前段最蛋疼的 IE678 和网景公司的恩怨情仇历史有如老太裹脚布一般的又臭又长,而前端程序猿需要解决的各种BUG其实是IE开发人员自己的错误而且再也不会去纠正了。

所以你说前段难不难,当你自己花了几天时间修正 IE的各种BUG,发现原来这些不是你的错,我想你肯定也会厌烦想吐

 

说道正题,事件绑定有两种方式,

我们先获取一个按钮

var btn = document.getElmentById('btn')

第一种 直接为 DOM元素 onclick 方法赋值

btn.onclick = function(){
    alert('hello cc')  
}

简单明了,但是我们知道js中的 函数其实也只是一个变量而已,所以这样写法当你想要绑定多个click事件的时候会出现问题

btn.onclick = function(){
    alert('a')    
}

btn.onclick = function(){
    alert('b')
}    

只会 alert  ‘ b ’出来,第一个函数被覆盖了

 

当然有好处,就是这样写取消事件绑定的时候, 只需要

btn.onclick = null

即可

并且所有浏览器都支持,不需要在乎 IE678的想法,简直酸爽 

 

不过这个严格来说算是事件添加,绑定的英文名叫做 bind ,所以正式的绑定事件我在第二篇文章再做介绍吧

 

posted @ 2015-02-02 10:32  iilovezy  阅读(245)  评论(0编辑  收藏  举报