我正在尝试根据用户检查的单选按钮向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");
}
});
答案 0 :(得分:7)
使用.prop('checked')
而不是.attr('checked')
。后者基于HTML属性,它始终为false,因为它不在DOM中。 .prop
可用于检查在DOM中可能不可见的属性更改。
答案 1 :(得分:5)
您的代码一直有效,直到jQuery 1.8
或更低。 http://jsfiddle.net/Dnd2L/
在最新版本中,.attr
用于HTML中定义的属性,.prop
映射到动态元素的属性并返回当前值。
http://jsfiddle.net/Dnd2L/1/
有关attr
和prop
- 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");