这是我的jQuery脚本:
$("input[type=radio]:checked").live("click", function() {
$(this).attr("checked",false);
});
Run Code Online (Sandbox Code Playgroud)
我想让我的所有单选按钮都可以选中并取消选中.该代码假设仅在单击检查的无线电时触发.但不知何故,任何无线电点击(无论是否检查)都会触发此事件.就好像浏览器会首先检查收音机然后运行我的脚本.
如果我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>
Run Code Online (Sandbox Code Playgroud)
这实际上并不是单选按钮的使用方式.您似乎正在尝试创建一个位于单选按钮和复选框之间的输入控件.
您可以采取以下几种方法:
1)使用单独的按钮清除单选按钮:
HTML:
<input id="clearRadios" type="button">Clear</input>
Run Code Online (Sandbox Code Playgroud)
jQuery:
$('#clearRadios').click(function() {
// use attr only if you're using an older version of jQuery
$('input[type=radio]').prop('checked', false);
});
Run Code Online (Sandbox Code Playgroud)
2)使用被操纵的复选框像单选按钮一样工作:
var $chkboxes = $('input[type=checkbox]');
$chkboxes.click(function() {
var currChkbox = this;
$chkboxes.each(function() {
if (this !== currChkbox) {
$(this).prop('checked', false);
}
});
});
Run Code Online (Sandbox Code Playgroud)
如果是我,我可能会在大多数情况下选择第一个选项.