2

このコードはjQuery、ver。1.6

<input type="checkbox" class="radio" value="1" name="sameName" />
<input type="checkbox" class="radio" value="1" name="sameName" />
<input type="checkbox" class="radio" value="1" name="sameName" />

$("input:checkbox").click(function() {
    if ($(this).attr("checked") === true) {
        var group = "input:checkbox[name='" + $(this).attr("name") + "']";
        $(group).attr("checked", false);
        $(this).attr("checked", true);
    } else {
        $(this).attr("checked", false);
    }
});​

しかし、jQuery 1.7の新しいメソッドを使用してコードを変更すると、機能しませんか?なぜ?年の時間をありがとう:

$("input:checkbox").on('click', function() {
    if ($(this).attr("checked") === true) {
        var group = "input:checkbox[name='" + $(this).attr("name") + "']";
        $(group).attr("checked", false);
        $(this).attr("checked", true);
    } else {
        $(this).attr("checked", false);
    }
});​
4

3 に答える 3

7

.prop('checked',true)の代わりに使用してください.attr

http://api.jquery.com/prop

また、if ($(this).attr("checked") === true)単純に短縮することができます

if ($(this).prop("checked")) {
于 2012-11-13T14:39:20.240 に答える
3

attrは文字列を返します。.propを使用して、jQuery1.6以降のチェック済みプロパティを設定する必要があります

$("input:checkbox").on('click', function() {
    if (this.checked) {
        var group = "input:checkbox[name='" + $(this).attr("name") + "']";
        $(group).prop("checked", false);
        $(this).prop("checked", true);
    } else {
        $(this).prop("checked", false);
    }
});​

jQuery .prop()ドキュメントから

.attr()メソッドの代わりに、.prop()メソッドを使用して無効に設定し、チェックする必要があります。

于 2012-11-13T14:39:28.400 に答える
1

あなたのコードが間違っているからです。.on()イベントは要素のコンテナを必要とします。

したがって、HTMLコードは次のようになります。

<div id="chkContainer">
    <input type="checkbox" class="radio" value="1" name="sameName" />
    <input type="checkbox" class="radio" value="1" name="sameName" />
    <input type="checkbox" class="radio" value="1" name="sameName" />
</div>

およびJAVASCRIPTは次のように機能します。

$('#chkContainer').on('click', 'input:checkbox', function() {
    if ( $(this).is(':checked') ) {
        var group = "input:checkbox[name='" + $(this).attr("name") + "']";
        $(group).attr("checked", false);
        $(this).attr("checked", true);
    } else {
        $(this).attr("checked", false);
    }
});

これはあなたのための例です:http://jsfiddle.net/5xDzv/1/

于 2012-11-13T14:51:57.090 に答える