9

change()イベント完了後に関数を呼び出す方法は?

たとえば、次のようなものです: ( jQuery にはデフォルトとしてコールバックメソッドがないことはわかっています)

$('#element').change( function(){
                     // do something on change
                     // $('#milestonesSelect').multiselect({ minWidth: 120 , height : '200px' ,selectedList: 4  }).multiselectfilter();
                      // some animation calls ...
                      // ...
                     }, function(){
                     // do something after complete
                      alert('another codes has completed when i called');
                     }
                   );

すべての関数に対して完全なコールバックを呼び出すことを除いて、変更メソッドのすべてのコードが完了した後に単一のコールバックを呼び出すことは可能ですか?

変更イベントの完了後に何かをする必要がある

変更ハンドラーでメソッドに順序を設定する必要がありますか?

4

3 に答える 3

11

おそらく、イベントのバブリングを利用して、 にコールバックを登録できますdocument

$(document).on('change', '#element', function(){
    console.log('after all callbacks')
});

デモ:フィドル

于 2013-04-04T08:06:48.550 に答える
2

私はこれを自分で調査するのに少し時間を費やしたので、この質問への回答も提出することにしました。これは、より良いアプローチである可能性のあるjQueryの遅延メソッドを利用していません。私はその問題について意見を述べるのに十分なほど調査していません。

$("#element").change(function() {
  handler().after(callBack($("#element").val()));
}

function handler() {
  alert("Event handler");
}

function callBack(foo) {
  alert(foo);
}

デモ: JSFiddle

于 2014-01-28T23:15:47.847 に答える
0

あなたの質問を正しく理解できれば、変更イベントが発生した後にコードが 1 回だけ実行されます。

var changed = false;

$('#element').on('change', function() {
    if ( !changed ) {
        // do something on change
        changed = true;
    }
  }
});
于 2013-04-04T07:30:40.927 に答える