jQuery remove()回调?

chr*_*der 17 javascript jquery callback

是否有正式的方法来挂钩到jQuery.remove(),以便可以在之前/之后调用函数?

我有一个系统,其中某些处理程序附加到元素,有时这些元素被删除(例如,一个UI小部件,其主要元素被页面上的一些其他操作删除).如果可以通知处理程序他们的主要元素已被删除,我可以更轻松地运行清理例程.

mcn*_*ium 23

你可以使用jQuery.when():

$.when($('div').remove()).then( console.log('div removed') );
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在寻找一种方法立即删除元素*并在删除完成后触发回调,则可以完成工作.但是在jQuery中删除事件是一个同步事件,所以为此目的,答案是多余的:你可以完成同样的事情:`$('div').remove(); console.log('div removed');` (4认同)
  • 至于*稍后被通知*当一个元素被移除时,这就是OP所要求的,这将不会做的伎俩(请注意`$('div').remove()`在作为参数传递时被调用`when`;这实际上意味着元素被立即删除) (2认同)

Dre*_*rew 5

使用自定义事件,将处理程序附加到在删除之前/之后触发的自定义事件.例如,

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

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

$( document ).trigger( 'remove', 'p' ); //Remove all p's
Run Code Online (Sandbox Code Playgroud)