jQueryやPrototype.jsのセレクタ関数の動作速度を二倍にするライブラリを作りました
と言っても、前々から作っているセレクタ関数が依存無しで簡単に切り出せそうだったから、切り出しただけです。
動作ブラウザはIE5.5以上です。これを導入するとIE5でも動作します。
使い方
ksk("div"); // divタグを取得します ksk("p", document.body); // body要素以下のpタグを取得します ksk("a", document.getElementsByTagName("p")); // p要素以下のaタグを全て取得します
セレクタはCSS3のやつを大体実装しています。最大の特徴は複数の要素以下の探索に対応していることです。kQueryが実際に完成したら、$(selector).find(selector)とかは高速かつ正確に処理できる予定です。
既知のバグとか
- 親要素のチェックが甘いです。後で直します。
- DocumentFragumentに対してのセレクトはテストしていません。
- XML文書に対してのセレクトはテストしていません。
- :root(とそれに該当する要素)の処理が間違っています。
他のライブラリとの連携
jQueryまたはPrototype.jsを読み込んだ直後にksk.jsを読み込むと、それぞれのjQuery.find、$$を置き換えます。
jQueryに関しては既存の独自疑似セレクタには対応します。ちなみにこれは通るようにしました(はじめは。結構、バグっていたw)。
Prototype.jsは返す要素に対して、Element.Methodsを適用します。
どちらも、大体、1倍から10倍ぐらい速くなります。
わかったこと
jQueryよくできている。