Я пытаюсь выяснить, как выполнить некоторый js код, когда элемент удален из страницы:
jQuery('#some-element').remove(); // remove some element from the page
/* need to figure out how to independently detect the above happened */
есть ли событие, адаптированное для этого, чего-то как:
jQuery('#some-element').onremoval( function() {
// do post-mortem stuff here
});
спасибо.
Я не уверен, что для этого есть дескриптор события, поэтому вам придется сохранить копию DOM и сравнить с существующей DOM в некоторых своего рода цикл опроса - который может быть довольно неприятным. Firebug делает это - если вы проверяете HTML и запускаете некоторые изменения DOM, он на короткое время выделяет изменения желтым цветом в консоли Firebug.
В качестве альтернативы вы можете создать функцию удаления ...
var removeElements = function(selector) {
var elems = jQuery(selector);
// Your code to notify the removal of the element here...
alert(elems.length + " elements removed");
jQuery(selector).remove();
};
// Sample usage
removeElements("#some-element");
removeElements("p");
removeElements(".myclass");
Встроенного события для удаления элементов нет, но его можно создать методом удаления по умолчанию jQuery. Обратите внимание, что обратный вызов должен быть вызван перед фактическим удалением, чтобы сохранить ссылку.
(function() {
var ev = new $.Event('remove'),
orig = $.fn.remove;
$.fn.remove = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
$('#some-element').bind('remove', function() {
console.log('removed!');
// do pre-mortem stuff here
// 'this' is still a reference to the element, before removing it
});
// some other js code here [...]
$('#some-element').remove();
Примечание: некоторые проблемы с этим ответом были описаны в других плакатах.
html()
replace()
или других методов jQueryПохоже, что наиболее элегантным решением этой проблемы является