web-dev-qa-db-ja.com

jQuery remove()コールバック?

関数を前後に呼び出すことができるようにjQuery.remove()にフックする公式の方法はありますか?

特定のハンドラーが要素にアタッチされ、これらの要素が削除されることがあるシステムがあります(たとえば、ページ上の他のアクションによってプライマリ要素が削除されるUIウィジェット)。主要な要素が削除されたことをハンドラーに通知できれば、クリーンアップルーチンを少し簡単に実行できます。

17
chroder

jQuery.when() を使用できます:

$.when($('div').remove()).then( console.log('div removed') );
24
mcnesium

カスタムイベントを使用し、削除の前後に発生するカスタムイベントにハンドラーをアタッチします。例えば、

$( document ).bind( 'remove', function( event, dom ){

    $( document ).trigger( 'beforeRemove', [ dom ] );
    $( dom ).remove();
    $( document ).trigger( 'afterRemove', [ dom ] );
});

$( document ).trigger( 'remove', 'p' ); //Remove all p's
5
Drew

ここに気の利いたハックがあります-あなたはそれを試してみたいかもしれません。

$('div').hide(1, function(){
    // callback
    $(this).remove();
});
3