2

次のコードが機能しないのはなぜですか。イベントのデフォルト アクションを防止します。とにかくチェックボックスをオンにしたい。

html

<input type="checkbox" class="checkbox" />

ジャバスクリプト

$('.checkbox').click( function(e) {
    e.preventDefault();
    // some logic happens... now i may decide to check the box (in this case we want to check it for testing)
    $('.checkbox').prop('checked',true);
});

チェックボックスをクリックしてもチェックボックスがオンになると思うかもしれませんが、そうではありません。フィドルをチェックして、私が何を意味するかを確認してください。

http://jsfiddle.net/5KDH8/

私もattr運なしでこの機能を使ってみました。

4

2 に答える 2

3

「checked」プロパティを設定するコードを別のイベントループに配置する必要があります。

setTimeout(function() { $('.checkbox').prop('checked', true); }, 1);

ハンドラーまたはライブラリーは、ハンドラーが呼び出される前にクリックに応答してチェックボックスを設定するため、イベントハンドラーが戻った後にチェックボックスの設定を解除する必要があります。

于 2013-03-21T20:10:51.850 に答える
0
$('.checkbox').click( function(e) {
    // do some logic that returns true or false
    if (!mylogic) {
        return false;
        // returning false will prevent the checkbox to be checked.
    }
});
于 2013-03-21T20:43:09.520 に答える