Инициировать изменение поддерева

#javascript #jquery #mutation-observers

#javascript #jquery #мутация-наблюдатели

Вопрос:

Как я могу инициировать изменение поддерева с помощью MutationObserver?

JavaScript

 function mutate(mutations) {
    mutations.forEach(function(mutation) {
        console.log(mutation.type);
    });
}

var target = document.querySelector('div#mainContainer');
var observer = new MutationObserver( mutate );
var config = { attributes: true, characterData: true, childList: true, subtree: true };

observer.observe(target, config);
  

HTML

 <div id="mainContainer">
    <h1>Heading</h1>
    <p>Paragraph.</p>
    <img src="http://i.stack.imgur.com/k7HT5.jpg" alt="Photo" id="photo" height="100">
</div>
  

Я могу инициировать изменение атрибута с помощью:

 document.getElementById('photo').src = 'http://i.imgur.com/Xw6htaT.jpg';
  

Я могу инициировать изменение символьных данных с помощью:

 document.querySelector('div#mainContainer p').innerHTML = 'Some other text.';
  

Я могу инициировать изменение дочернего списка с помощью:

 jQuery('div#mainContainer').append('<div class="insertedDiv">New <div>!</div>');
  

Как запускается изменение поддерева, чтобы console.log(mutation.type); распечатал его?

Комментарии:

1. subtree означает, что изменения сообщаются для любого вложенного узла внутри целевого объекта, это не отдельный тип мутаций.

2. Круто, спасибо, Вау.

3.Документация MutationObserver по MDN.