jQuery单选按钮“已检查”属性未触发

时间:2013-02-12 20:09:15

标签: javascript jquery radio-button checked

我正在尝试根据用户检查的单选按钮向div添加文本,但无论选中哪个属性,它都会触发“else”块,并且每次都显示“female”。

请帮忙!

<input type="radio" name="gender" class="gender" id="male" value="male">Male<br />
<input type="radio" name="gender" class="gender" id="female" value="female">Female<br />

$(".gender").change(function () {                 
if ($("#male").attr("checked")) {
        $("#content").text("male");
    }
    else {
        $("#content").text("female");
    }
});

4 个答案:

答案 0 :(得分:7)

使用.prop('checked')而不是.attr('checked')。后者基于HTML属性,它始终为false,因为它不在DOM中。 .prop可用于检查在DOM中可能不可见的属性更改。

http://jsfiddle.net/Xxuh8/

答案 1 :(得分:5)

您的代码一直有效,直到jQuery 1.8或更低。 http://jsfiddle.net/Dnd2L/

在最新版本中,.attr用于HTML中定义的属性,.prop映射到动态元素的属性并返回当前值。 http://jsfiddle.net/Dnd2L/1/

有关attrprop - https://stackoverflow.com/a/5876747/297641

的更多信息

答案 2 :(得分:0)

由于您的单选按钮已分组且无法进行多项选择,因此您并不特别需要。

您可能想要使用此代码:

$(".gender").change(function () {                 
    $("#content").text($(this).val());
});

JSFiddle:http://jsfiddle.net/3Lsg6/

答案 3 :(得分:0)

或者如果您的无线电没有使用课程

$("input[name='gender'][checked='checked']").val();

获取已检查无线电的值。要更改选中的内容,请将要检查的cbx的值放在val()中,即...val("male");