1

2 つの入力チェックボックスがあり、jQuery でそれらをチェック/チェック解除したい:

<input type="checkbox" name="user1" value="1" id="u1" onclick="loadUserCalendar(1)">
<input type="checkbox" name="user2" value="2" id="u2" onclick="loadUserCalendar(2)">

JavaScript コード:

var list = new cookieList("calendar_users"); 
var users = list.items();
for (var i = 0; i < users.length; i++) {
    $('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', true);
    console.log('substring: ' + users[i].substr(1,1));
    console.log('enabling user ' + users[i]);
}

var users次の値が含まれます: u1,u2. ユーザー ID のみを取得するために、部分文字列を実行すると、以下のコンソール出力でわかるように、正しい番号が取得されます。

コンソール出力:

substring: 1
enabling user u1
substring: 2 
enabling user u2 

コードの実行時にチェックボックスがチェックされない理由がわかりません。ここで何が間違っていますか?

編集:互換性の理由からjQuery 1.4.4を使用しています。それが私が使用している理由です.attr()

4

5 に答える 5

2

インライン イベント ハンドラ ( onclick="loadUserCalendar(1)") は、jQuery の方法ではありません。html には何も含めないでください。それらを取り除き、あなたのjqueryに追加してください:

$(function() {
    $('form').on('click',':checkbox', function() {
        loadUserCalendar($(this).val());
    });
});

しかし、おそらくあなたが望んでいたのはこれでした:

$(function() {
    $('form').on('click',':checkbox', function() {
        $('form :checkbox').attr('checked','checked');
    });
});

jquery 1.ancient バージョン:

$(function() {
    $('input[type=checkbox]').live('click', function() {
        // do things
    });
});
于 2013-07-05T15:48:47.490 に答える
0

jQuery のどのバージョンを使用していますか?

次のようなものを試す必要があります:

$('input[name="user' + users[i].substr(1,1) + '"]').attr('checked', 'checked');

また

$('input[name="user' + users[i].substr(1,1) + '"]').prop('checked', 'checked');

2 つ目は jQuery 1.6+ です。

于 2013-07-05T15:46:59.823 に答える
0

何かをチェックしたい場合は、次のことを行う必要があります。

 $('.myCheckbox').attr('checked','checked');
于 2013-07-05T15:48:17.147 に答える
0

チェックボックスを動的に作成した場合は、単純な関数ではこれらの要素にアクセスできないため、メソッドで jQuery を使用します。

于 2013-07-05T15:48:33.517 に答える