Mutation Event は、薬にも毒にもなるから気をつけて
jQuery1.3β みた(jQueryのコードをまじめに見たのは、これが初めてかも)
Sizzle 0.9 から キャッシュ機能 が消えたわけを想像してみる
- CSSセレクタの結果をキャッシュする方法の一つに、Mutation Event がある。
- document.addEventListener("DOMSubtreeModified") ってやると、DOMツリーの全ての改変をフックしてくれる。
- ちょっと前の Sizzle は、"DOMNodeInserted", "DOMNodeRemoved", "DOMAttrModified" を監視してた。
- でも、監視をOFFにする仕組みが無かったため、監視しっぱなしになってた。
- 監視しっぱなしだと、style.top なんかのプロパティをいじるだけで、毎回関数が呼ばれるので、モッサリに。
- 「セレクタだけ速くても、それ以外がモッサリしてしまう」→ 「IEでキャッシュ効かないし、最新のブラウザってみんな querySelectorAll つかえるし。キャッシュは止めよう」
といった流れかもしれません。