jQueryの強力な機能のひとつに、 $('#the-target')
のようにCSSのセレクターを用いて要素検索できるというものがあります。この要素検索を行うモジュールにはSizzleという名前が付けられています。
一方、近代的なブラウザーには .querySelectorAll()
がネイティブで実装されています。こちらもCSSのセレクターで要素検索できるメソッドです。
var $elems = $('elem#id.class, .and.more.selectors'); var elems = document.querySelectorAll('elem#id.class, .and.more.selectors');
JavaScriptで何かするよりも、ネイティブでやった方が高速です。じゃあSizzleなんていらないんじゃないの?と思われるかもしれません。実際、jQuery互換軽量フレームワークを詠うZepto.jsでは、ほとんどそのまま querySelectorAll()
を利用しています。(そのために古いIEでは正常に動作しませんが。)
それでもjQueryはSizzleを使い続ける方針です。Sizzleが .querySelectorAll()
に勝る点とは、何でしょうか。