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 属性に基づいており、DOM にないため、常に false になります。 .propDOM では表示されない可能性のあるプロパティの変更を確認するために使用できます。

http://jsfiddle.net/Xxuh8/

于 2013-02-12T20:09:56.263 に答える
5

あなたのコードは、以下まで機能していたでしょうjQuery 1.8http://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

または、ラジオにクラス使用がない場合

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

チェックされたラジオの値を取得します。チェックするものを変更するには、チェックしたい cbx の値を val() に入れます。つまり、...val("male");

于 2013-04-25T20:29:23.923 に答える
0

ラジオボタンがグループ化されており、複数の選択肢ができないため、if は特に必要ありません。

代わりにこれを使用することもできます:

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

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

于 2013-02-12T20:20:09.840 に答える