1

のコールバックを行っています。が完了toggleする前に実行されているようtoggleです。それを防ぐために私にできることはありますか?または、単に「逆」にしますかif

jsfiddle:デモ

$('#toggle_now').change(function () {
    $('#show_me').toggle(!this.checked, callBack());
}).change();

function callBack() {
    var $this = $('#show_me');
    if (!$this.is(':visible')) {
        $('#span_me').html('visible');
    } else {
        $('#span_me').html('hidden');        
    }
}

編集:
オプション off がちょっと必要ですが、トグルをリッスンし続ける新しい関数を作成せずShowAndHideに達成できますか?callback function

4

3 に答える 3

1

関数自体ではなく、関数への呼び出しをバインドしています。への変更:

.toggle(!this.checked, callBack); //no parentheses

編集: 実際には別の問題があります。引数を受け入れるとき、.toggleメソッドはそのようには機能しません。boolean代わりに、その最初の引数を削除して、次のように逆にしますif

http://jsfiddle.net/5R7Nf/3/

于 2012-12-11T10:07:45.690 に答える
0

次のように使用します。

$('#toggle_now').change(function () {
    $('#show_me').toggle(!this.checked, callBack);
}).change();
于 2012-12-11T10:07:52.273 に答える
0

まず、トグルで「showOrhide」オプションを使用すると、コールバックがありません!!!

これは、トグル関数が非同期になる唯一の時間であるため、その期間が必要です。

$('#toggle_now').on('change', function () {
    $('#show_me').toggle(this.checked);
    $('#span_me').html($('#show_me').is(':visible') ?  'visible' : 'hidden');
}).change();​

とにかく関数が完了html()するまで関数は実行されないため、コールバックは必要ありません。toggle()

フィドル

于 2012-12-11T10:07:53.860 に答える