1

jQuery関数を使用して、チェックボックスの.attr()チェックとチェックを外しています。最初は機能しますが、それ以上は機能しません。

それに関するいくつかの質問を読んだ後、私はこれを機能させることができません。例これこれこれ

Chrome と Firefox でテストしました。jsFiddleを使用しても同じ問題が発生します。

問題はどこだ?JavaScript コード、HTML、またはどこで?

これはすべてのコードです:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8">
    <title>Searchs</title>
</head>
<body>
    <div id="results-body">
        <table>
            <thead>
                <tr>
                    <td class="small center">
                        <input type="checkbox" id="checkall" onclick="master();" />
                    </td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="center">
                        <input type="checkbox" class="slave" onclick="slave();" />
                    </td>
                </tr><tr>
                    <td class="center">
                        <input type="checkbox" class="slave" onclick="slave();" />
                    </td>
                </tr>
            </tbody>
        </table>
    </div>

    <!-- LOAD THE JS AT THE END OF THE FILE -->
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
        $(document).ready(function(){
            master = function() {
                if ($( '#checkall:checkbox' ).is(":checked"))
                    $('input:checkbox').attr('checked',true);
                else
                    $('input:checkbox').attr('checked',false);
            }
            slave = function() {
                var allSelected = true;
                $( '.slave[type="checkbox"]' ).each(function() {
                    if ($( this ).is(":not(:checked)")){
                        allSelected = false;
                        //return;
                    }
                });
                if (!allSelected) {
                    //$( '#checkall:checkbox' ).removeAttr('checked');
                    alert("REMOVE: \nFrom " + $( '#checkall:checkbox' ).attr('checked') );
                    $( '#checkall:checkbox' ).attr('checked',false);
                    alert("to " + $( '#checkall:checkbox' ).attr('checked') );

                } else {
                    alert("ADD: \nFrom " + $( '#checkall:checkbox' ).attr('checked') );
                    $( '#checkall:checkbox' ).attr('checked',true);
                    alert("to " + $( '#checkall:checkbox' ).attr('checked') );
                }
            }
        });
    </script>
</body>
</html>
4

2 に答える 2

4

.prop()のようなプロパティを設定するときに使用する必要があるcheckedため、次のように変更します。

.attr('checked', true)

.prop('checked', true)

そして次のようなもの:

$( '#checkall:checkbox' ).attr('checked')

と:

$( '#checkall:checkbox' ).is(':checked')
于 2013-07-09T19:03:01.743 に答える
3

.attr()すべてをに変更します.prop()

jsFiddle の例

ドキュメントが言うように(1.9から):

フォーム要素のチェック状態、選択状態、無効状態などの DOM プロパティを取得および変更するには、.prop() メソッドを使用します。

于 2013-07-09T19:01:28.600 に答える