这是我的jQuery脚本:
$("input[type=radio]:checked").live("click", function() {
$(this).attr("checked",false);
});
我想让我的所有单选按钮都可以选中和取消选中。该代码假设仅在单击检查的无线电时触发。但不知何故,任何无线电点击(无论是否检查)都会触发此事件。就像浏览器先检查收音机然后再运行我的脚本一样。
如果我alert($("input[type=radio]:checked").size())
,它给了我正确的计数。
我正在测试FF4中的代码,但我希望该解决方案也可以满足IE。
好的,因为我的问题似乎令人困惑,这是我想要的工作代码,但它需要额外的自定义属性,我希望可以避免。
<input type="radio" name="group1" value="1" isChecked="false"/>
<input type="radio" name="group1" value="2" isChecked="false"/>
<input type="radio" name="group1" value="3" isChecked="false"/>
<script>
$(document).ready(function(){
$("radio").click(function(){
if($(this).attr("isChecked")=="false"){
$(this).attr("isChecked","true");
$(this).attr("checked",true);
}
else{
$(this).attr("isChecked","false");
$(this).attr("checked",false);
}
});
});
</script>
答案 0 :(得分:8)
这实际上不是单选按钮的使用方式。您似乎正在尝试创建一个位于单选按钮和复选框之间的输入控件。
您可以采取以下几种方法:
1)使用单独的按钮清除单选按钮:
HTML:
<input id="clearRadios" type="button">Clear</input>
jQuery:
$('#clearRadios').click(function() {
// use attr only if you're using an older version of jQuery
$('input[type=radio]').prop('checked', false);
});
2)使用被操纵的复选框像单选按钮一样工作:
var $chkboxes = $('input[type=checkbox]');
$chkboxes.click(function() {
var currChkbox = this;
$chkboxes.each(function() {
if (this !== currChkbox) {
$(this).prop('checked', false);
}
});
});
如果是我,我可能会在大多数情况下采用第一种选择。