0

重複の可能性:
デフォルトのチェックボックス イベントが jQuery のチェック/チェック解除機能をオーバーライドしないようにするにはどうすればよいですか?

ユーザーがチェックボックスをオンにしたときにイベントをトリガーする方法を見つけました。ただし、同じチェックボックスをオフにすると、イベントをトリガーしたいと考えています。基本的に、チェックボックスをオンにしてイベントをトリガーし、同じチェックボックスをオフにすると別のイベントをトリガーする必要があります。チェックしてすぐにチェックを外して、別のイベントをトリガーできるようにしたいです。これが私のコードです:

$('#myID').click(function() {

    var isChecked = $('#myID').is(':checked');

    if(isChecked)
    {
        $('#myField').replaceWith('Something');
    }
    else
    {
        $('#myField').replaceWith('Something Else');
    }
});
4

4 に答える 4

1
$('#myID').click(function() {
  var isChecked = this.checked; // this.checked is enough or $(this).is(':checked')
  if(isChecked) {
        $('#myField').replaceWith('Something');
    } else {
        $('#myField').replaceWith('Something Else');
    }
});

注: 1 つを使用すると、DOM から削除されるため、次回はそれをキャッチできず、次は失敗することに注意し$('#myField').replaceWith()#myFieldくださいreplaceWith()

デモ

于 2012-05-17T17:37:30.757 に答える
0

クラスを使用してチェックイベントをチェックボックスにタグ付けすることができます

$('#myID').click(function() {

    var isChecked = $(this).is(':checked');
    var alreadyChecked = $(this).has('checked');

    if(alreadyChecked)
    {
       //fire appropriate event
    }

    if(isChecked)
    {
        $('#myField').replaceWith('Something');
        $(this).addClass('checked');
    }
    else
    {
        $('#myField').replaceWith('Something Else');
    }

});

開始時にチェックされている場合、最初のクリックでチェックが解除され、2 番目のクリックでチェックされ、3 番目のクリックでイベントが発生します開始時にチェックされていない場合、最初のクリックでチェックがオンになり、2 番目のクリックでイベントが発生します

于 2012-05-17T17:37:43.743 に答える
0
$('#myID').on('change', function() {
    var something = this.checked ? 'Something' : 'Something Else';
    $('#myField').replaceWith(something);
});​

問題は、要素全体を置き換えている#myFieldため、次に関数を実行したときに要素がなく、機能して#myfieldいないことです。代わりにコンテンツを置き換えてみてください、html()append()prepend()または要素全体を削除しない他のもので十分#myFieldです:

<div id="myField">Something</div>

-

$('#myID').on('change', function() {
    var something = this.checked ? 'Something' : 'Something Else';
    $('#myField').text(something);
});​

フィドル

于 2012-05-17T17:47:33.940 に答える
0

私はあなたがjqueryのトリガーイベントを探していると思うので使用してください

<script>
        $('#btn1').trigger('click');


        $('#btn1').click(function(){
            // do something
        });
</script>
于 2012-05-17T18:04:11.353 に答える