3

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

请帮忙!

<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

4 回答 4

7

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

http://jsfiddle.net/Xxuh8/

于 2013-02-12T20:09:56.263 回答
5

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

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

attr有关和的更多信息prop- https://stackoverflow.com/a/5876747/297641

于 2013-02-12T20:15:42.643 回答
0

您并不特别需要 if,因为您的单选按钮是分组的,并且不可能有多个选择。

您可能想改用它:

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

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

于 2013-02-12T20:20:09.840 回答
0

或者如果您的收音机没有上课用途

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

获取选中的收音机的值。要更改检查的内容,请将要检查的 cbx 的值放入 val() 中,即,...val("male");

于 2013-04-25T20:29:23.923 回答