私はSizzle以外のCSSセレクタ関数を探していて、this functionに出くわしました。document.evaluate - クロスブラウザ?
function SparkEn(xpath,root) {
xpath = xpath
.replace(/((^|\|)\s*)([^/|\s]+)/g,'$2.//$3')
.replace(/\.([\w-]+)(?!([^\]]*]))/g, '[@class="$1" or @class$=" $1" or @class^="$1 " or @class~=" $1 "]')
.replace(/#([\w-]+)/g, '[@id="$1"]')
.replace(/\/\[/g,'/*[');
str = '(@\\w+|"[^"]*"|\'[^\']*\')';
xpath = xpath
.replace(new RegExp(str+'\\s*~=\\s*'+str,'g'), 'contains($1,$2)')
.replace(new RegExp(str+'\\s*\\^=\\s*'+str,'g'), 'starts-with($1,$2)')
.replace(new RegExp(str+'\\s*\\$=\\s*'+str,'g'), 'substring($1,string-length($1)-string-length($2)+1)=$2');
var got = document.evaluate(xpath, root||document, null, 5, null);
var result=[];
while (next = got.iterateNext())
result.push(next);
return result;
}
本当であるには余りにも良いですのように私は感じて、これは(?のxpath)Firefoxの唯一の機能であるか、それは遅いですか?基本的になぜ私はこれ以上シズルを使用しますか?
私はそれがFirefoxだけであると思います、どのように残念です。どうやらIEはXML文書でそれを行うことができます。 – Olical
o私の神、やっと私は誰かがiam :)と同じように考えていることが分かった)))))))))))))))))) http://stackoverflow.com/questions/15310502/how-to-create-a- javascript-selector-engine – Marwan