在input中,如果type为checkbox或radio时,浏览器会将该input渲染成为系统的单选或多选组件,如果这时,我们在这个input上绑定click事件,那就要小心谨慎使用e.preventDefault()这个方法(jQuery中整合了这个方法使得它能够兼容去掉浏览器中的默认事件)。之所以要说谨慎使用,就是,如果你在这个事件的响应程序中判断该checkbox是否选中时,得到的结果和真正的选中状态会有所不同。下面先从一个简单的示例说明这个现象。(为了简单起见,我使用了jquery,他能节省选择器部分的代码,但不影响本文需要说明的问题)。代码段如下:
<script type="text/javascript">window.onload=function(){
$('#chk').on('click',function(e){
e.preventDefault();
alert($(this).attr('checked'));
});
}</script></head><body><input type="checkbox" id="chk" /></body>