当原代码编写者编写了如下代码
<input id="Button1" type="button" value="button" οnclick="oldClick()"/>
function oldClick() {
alert('old');
}
function newClick() {
alert('new');
}
我们要对onclick事件重新定义成newClick相信大家会用Jquery的attr属性重新定义
$('#Button1').attr('onclick','newClick()');
这样的IE8以上的浏览器和FF下都没有问题,如果在IE6下则新定义的事件将不会被触发,这是在做项目中碰到的情况,具体原因有时间查资料
所以我们得换种方式来重定义事件
$('#Button1').removeAttr('onclick');
$('#Button1').bind('click', function () {
alert('newaa');
});
这样就能正确的触发新事件了
jQuery如何重新绑定已经绑定的事件?虽然我们现在推荐行为分离,渐进增强,但在很多遗留系统里还是存在很多这样的代码
1 | <input tye= "button" value= "ClickMe" id= "btn1" onclick= "foo()" /> |
就是直接在DOM元素上绑定事件
这样做有很多缺点
1.代码高度耦合
2.增加HTML大小
3.书写不了逻辑性很强的代码