2013-05-18 12 views
5

私はMutationObserverを使用することについて私の脳を揺さぶっており、何も進展していません。私はW3CのサイトとMDNでそれについて読んだことがあります。 MDNでそれを読むとき、すべての事例が意味をなさない。MutationObserverについて混乱しました

// select the target node 
var target = document.querySelector('#some-id'); 

// create an observer instance 
var observer = new MutationObserver(function(mutations) { 
    mutations.forEach(function(mutation) { 
    console.log(mutation.type); 
    }); 
}); 

// configuration of the observer: 
var config = { attributes: true, childList: true, characterData: true }; 

// pass in the target node, as well as the observer options 
observer.observe(target, config); 

// later, you can stop observing 
observer.disconnect(); 

私が最も困っている部分は、オブザーバーインスタンスを作成することです。そこに属するものの構文はわかりません。また、コンソールでは、 "TypeError:値はインターフェイスノードを実装していません"と表示されています。 どのような例を見ても使用してみましたが、この例のセレクタを目的のjQueryセレクタに置き換えます(非jQセレクタも同じ問題を返しました)。

+0

'MutationObserver'は、jQueryに関連する_not_です。クエリセレクタはシズルと似ているかもしれませんが、実装を共有していません。 – Halcyon

+0

idが "some-id"の要素がありますか? – bfavaretto

+0

@Frits van Campen私はそれらが関連していないことを知っていますが、jQライブラリを使用しています.JQセレクタを使用するかどうかにかかわらず、TypeErrorメッセージが表示されます。 –

答えて

0

まず、ノード要素ではないため、jQセレクタは使用しないでください。 第2に、クエリセレクタがnullを返さないことを確認する必要があります。 初めてdocument.body上のオブザーバーを試してみてください:間違いなくNodeオブジェクトです。

(
    new MutationObserver(function(mutationEventList){ 
     console.log(mutationEventList) 
    }) 
) 
.observe(document.body, { 
    childList: true, 
    attributes: true, 
    characterData: true 
}) 

よう 何かあなたがオブザーバーをターゲットに慣れるとMutationObserverInitオプション値を理解する(彼らはそれができたほど良好ではない記述されている)あなたはmutationObserver権で作業することができます。

関連する問題