1

誰かがチェックボックスをクリックするたびに実行される機能があり、チェックボックスがチェックされているかチェックされていないかによって、さまざまなことが起こる可能性があります。ただし、フォームの送信後、以前の値が読み込まれ、ボックスがチェックされているかどうかに基づいて同じ変更を適用したいと考えています。これにより、2つの同一の機能が残ります

サンプルコード:

// !- Bind checkboxes to show divs
        $('input[type="checkbox"]').bind("change", function(){
                if ($(this).is(":checked")) {
                    $("#"+$(this).data('toggle')).show();
                }
                else {
                    $("#"+$(this).data('toggle')).hide();
                }
        });

        // Init checkboxes which are already checked via previous selection
        $('input[type="checkbox"]').each(function(index){
                if ($(this).is(":checked")) {
                    $("#"+$(this).data('toggle')).show();
                }
                else {
                    $("#"+$(this).data('toggle')).hide();
                }

        });

http://jsfiddle.net/ms7EY/

bind を使用すると、複数のイベントを追加できることはわかっていますが、各関数はイベントではないため、これを少しクリーンアップする方法がわかりません。別の関数を作成し、引き続き bind() と each() を使用する必要がありますが、両方にコールバックを使用する必要がありますか、それともより洗練された解決策がありますか?

4

2 に答える 2

3

.trigger()を使用してイベントをトリガーできます。選択した要素に関連付けられているすべての変更イベント ハンドラーが実行されます。

    $('input[type="checkbox"]').bind("change", function(){
            if ($(this).is(":checked")) {
                $("#"+$(this).data('toggle')).show();
            }
            else {
                $("#"+$(this).data('toggle')).hide();
            }
    }).trigger('change'); //or .change()

デモ:フィドル

于 2013-06-28T03:13:03.773 に答える
2

それぞれの代わりに、それを使用して変更イベントを「シミュレート」できます。

$('input[type="checkbox"]').trigger('change')

フィドル: http://jsfiddle.net/ms7EY/2/

于 2013-06-28T03:13:07.920 に答える