以前は、jQuery のdomManip
メソッドにフックしてすべての jQuery dom 操作をキャッチし、挿入された要素などを確認することができましたが、jQuery チームは jQuery 3.0+ でそれをシャットダウンしました。内部domManip
メソッドがコア jQuery コードの外部で使用できなくなるようにしました。
以前は次のようなことができたので、突然変異イベントも廃止されました。
$(document).on('DOMNodeInserted', function(e) {
if ( $(e.target).hasClass('MyClass') ) {
//element with .MyClass was inserted.
}
});
これは避けるべきであり、今日では、このように機能する Mutation Observers を代わりに使用する必要があります。
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation)
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
// element added to DOM
var hasClass = [].some.call(mutation.addedNodes, function(el) {
return el.classList.contains('MyClass')
});
if (hasClass) {
// element has class `MyClass`
console.log('element ".MyClass" added');
}
}
});
});
var config = {
attributes: true,
childList: true,
characterData: true
};
observer.observe(document.body, config);