編集:
これらの線に沿った単純なものはどうですか:
DocumentFragment.prototype.getElementById = function(id) {
for(n in this.childNodes){
if(id == n.id){
return n;
}
}
return null;
}
使用している他のライブラリでjQueryまたは選択APIを使用しないのはなぜですか? 私の知る限り、すべての主要なライブラリはフラグメントの選択をサポートしています。
jQ/Prototype/Dojo/etc のような大きなライブラリをスキップしたい場合は、Sizzle を使用できます。これは、jQ と Dojo を強化するセレクター エンジンであり、スタンドアロンとして提供されます。それも問題外である場合は、Sizzle ソースに飛び込んで、何が起こっているかを確認できると思います。全体として、数 100k を回避するために多大な努力を払っているように見えますが、Sizzle や別のオープン ソース ライブラリに引き込まれたすべての作業よりも、思いついたコードの実行時間が遅くなる可能性が高くなります。
http://sizzlejs.com/
ああまた...(推測)jQのトリックは、要素がDOMの外に出ていないことだと思います。私は間違っているかもしれませんが、あなたが次のようなことをすると思います:
$('<div></div>');
実際にはDOMドキュメントでは、ボディ/ヘッドノードの一部ではありません。それについては完全に間違っている可能性がありますが、それは単なる推測です。
だから、あなたは私に興味をそそられました。私はシズルを見ました..答えよりも - DOMメソッドを使用していません。セレクターのタイプにマップされたさまざまな DOMNode プロパティを比較するアルゴリズムを使用しているようです-何かが欠けていない限り...これは完全に可能です:-)
ただし、以下のコメントに記載されているように、Sizzle は DocumentFragments では機能しないようです...したがって、振り出しに戻ります :-)