我使用jQuery动态地向DOM添加了一组单选按钮。我已经注册了事件处理程序,它运行良好。但是,在IE6和IE7中单击时,单选按钮组不会更新选中的按钮。
我的原始代码类似于:
<body>
<form action="radio-ie7_submit" method="get" accept-charset="utf-8"></form>
<script type="text/javascript" charset="utf-8">
$(function() {
$.each(['A','B', 'C'], function (i, e) {
$('<input>')
.attr('type', 'radio')
.attr('name', 'foo')
.attr('checked', i == 1 ? 'checked' : '')
.val(e)
.appendTo($('form'))
.after(e + '<br />')
.click(function(){
alert('Kliiik')
})
})
})
</script>
</body>
同样,当我单击一个单选按钮时,会正确调用事件处理程序,但不会更新单选按钮。我做了这个似乎有效的黑客攻击:
<body>
<form action="radio-ie7_submit" method="get" accept-charset="utf-8"></form>
<script type="text/javascript" charset="utf-8">
$(function() {
$.each(['A','B', 'C'], function (i, e) {
$('<input>')
.attr('type', 'radio')
.attr('name', 'foo')
.attr('checked', i == 1 ? 'checked' : '')
.val(e)
.appendTo($('form'))
.after(e + '<br />')
.click(function(){
$('input[name="' + this.name + '"]').each(function () { this.checked = false });
this.checked = true;
alert('Kliiik')
})
})
})
</script>
</body>
基本上,我的修复工作是取消选中单选按钮组中的所有按钮,然后将单击的按钮标记为已选中。这似乎有点哈哈。有没有更好的方法来处理这个?有没有人遇到过这个问题,可以更深入地了解它的行为方式?
感谢。
答案 0 :(得分:3)
这是表单元素的旧IE问题。这不应该归咎于Jquery。如果您想为IE 6用户进行解决,那么您可以将您的点击功能设为
.click(function(){
$('input[name="' + this.name + '"]').attr('checked','');
this.checked = true;
alert('Kliiik')
})