当原代码编写者编写了如下代码
<input id="Button1" type="button" value="button" onclick="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.书写不了逻辑性很强的代码