有沒有官方的方法來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