Как отключить MutationObserver, когда один из элементов, перенесших мутацию, больше не найденJavascript

Форум по Javascript
Ответить
Anonymous
 Как отключить MutationObserver, когда один из элементов, перенесших мутацию, больше не найден

Сообщение Anonymous »

У меня есть MutationObserver, чтобы выполнить некоторую логику, поскольку элементы DOM добавляются. В конце мне нужно отключить наблюдателя. Это решение само по себе основано на том, существует ли определенный элемент или нет. Если в DOM больше нет загрузки , то это когда мне нужно отключить наблюдатель. Но безопасно ли это сделать внутри функции MutationObserver? < /P>

Код: Выделить всё

    const targetElement = document.querySelector('div.serviceRequest');

// Create a MutationObserver
const observer = new MutationObserver(function(mutationsList) {
for (const mutation of mutationsList) {
if (mutation.type === 'childList') {
updateSubmenuWhenScrolling();
}
// TODO: If a certain element is no longer found, need to disconnect
// let loadingElement = document.querySelector('div.loading');
// if (!loadingElement) {
//    observer.disconnect(); // ???
// }
}
});

// Configure the observer to watch for child list changes in the subtree
const config = { childList: true, subtree: true };

// Start observing the target element
if (targetElement) {
observer.observe(targetElement, config);
}
Этот поток подразумевает, что можно отключиться в функции мутатора, имея 2 -й аргумент для функции и вызывая отключение . Мой вопрос Почему это нормально. Я пришел к функции мутатора в результате изменений DOM, и я бы отключался прямо в середине этих изменений DOM на одном и том же наблюдателе. Что также, если отключить называется несколько раз в результате нескольких вызовов функций?

Подробнее здесь: https://stackoverflow.com/questions/796 ... g-mutation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»