$('input [type = radio]:checked')事件

时间:2011-07-13 04:04:43

标签: jquery checked

这是我的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>

1 个答案:

答案 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);
        }
    });      
});

如果是我,我可能会在大多数情况下采用第一种选择。