有没有官方的方法来jQuery.remove(),以便可以之前/之后调用一个函数?jQuery remove()回调?
我有一个系统,某些处理程序会附加到元素上,有时会删除这些元素(例如,其主要元素通过页面上的某些其他操作被删除的UI小部件)。如果可以通知处理程序他们的主要元素已被删除,那么我可以更轻松地运行清理程序。
有没有官方的方法来jQuery.remove(),以便可以之前/之后调用一个函数?jQuery remove()回调?
我有一个系统,某些处理程序会附加到元素上,有时会删除这些元素(例如,其主要元素通过页面上的某些其他操作被删除的UI小部件)。如果可以通知处理程序他们的主要元素已被删除,那么我可以更轻松地运行清理程序。
使用自定义事件,将处理程序附加到在删除之前/之后触发的自定义事件。例如,
$(document).bind('remove', function(event, dom){
$(document).trigger('beforeRemove', [ dom ]);
$(dom).remove();
$(document).trigger('afterRemove', [ dom ]);
});
$(document).trigger('remove', 'p'); //Remove all p's
您可以使用jQuery.when():
$.when($('div').remove()).then(console.log('div removed'));
对不起,也许这在目前的情况下不是很好的答案,但对我有用。 –
这可以完成工作。 – tponthieux
如果您正在寻找一种方法来立即删除元素*,并在删除完成后发生回调火灾,则可以完成此工作。但是在jQuery中删除事件是一个同步事件,所以为此目的,这里的答案是多余的:您可以实现完全相同的事情:'$('div')。remove(); ('div removed');' – Mahn
这里有一个漂亮的黑客 - 你可能想试一试。
$('div').hide(1, function(){
// callback
$(this).remove();
});
我只是进去看了相关代码,https://github.com/jquery/jquery/blob/master/src/manipulation.js#L168,它实际只是parent.removeChild瘦包装。所以请跟随@德鲁的回答。 – Boldewyn
除了包装原始删除事件外,您是否找到任何解决办法? – Mahn