0

2 クリック イベントをリッスンします。チェックボックスがチェックされている場合、最初の 1 つが起動します。

        $('#example').on('click', '.option', function(){
        // Some logic
    });

2 つ目は、チェックを外したときに発生します。

            $('#example').on('click', '.checked.option', function(){
        // Some other logic
    });

HTML 入力要素については、さまざまな方法でクラスを適用してみました。

class="checked option"
class="checked.option"
class="option checked"
class="option.checked"

ただし、どちらの場合も、チェックボックスがオフになっていると、2番目のイベントだけでなく、両方のイベントがトリガーされます。

質問: これを防ぐ方法はありますか? または、チェックボックスのクリックイベントを検出し、チェックされていないことを検出するより便利な方法はありますか?

ありがとう。

4

3 に答える 3

1

いくつかの方法:

$('#example').on('click', '.option', function(){
    if ($(this).is(':checked')) ...
});

checkedセレクターhttp://api.jquery.com/checked-selector/を参照してください

または:

$('#example').on('click', '.option:not(.checked)', function(){
    ...
});

notセレクターhttp://api.jquery.com/not-selector/を参照してください

あるいは:

$('#example').on('click', '.option:not(:checked)', function(){
    ...
});

$('#example').on('click', '.option:checked', function(){
    ...
});

ああ、ところで、クラスは次のように適用する必要があります: 、クラス属性class="option checked"に a を入れないでください。.

于 2012-05-03T23:15:01.267 に答える
1

質問: これを防ぐ方法はありますか? または、チェックボックスのクリックイベントを検出し、チェックされていないことを検出するより便利な方法はありますか?

はい、以下のコードはそれを防ぐ必要があり、jQuery セレクター (便利な imo) を使用してこれを検出します。お役に立てれば!ありがとう。

$('input:checkbox').click(function () {
    if ($(this).is(":checked")) {
        alert('was un-checked');               
    } else {
        alert('was checked');
    }
});

コードの動作はこちら:

http://jsfiddle.net/SCSZ6/

于 2012-05-03T23:34:32.647 に答える
0

changeの代わりにイベントを実際に使用してclickから、ボタンの状態を確認する必要があります。

 $('#example').on('change', '.option', function() {
     if( this.checked ) {
     }
     else {
     }
 });
于 2012-05-03T23:16:01.897 に答える