私はいくつかの数週間前に同じ問題に懸命に働きました。私は、結果が既に要素のリスト(存在する場合)を表しており、それが谷を反復できることを発見しました。 LIやH2のようなDOM要素の内部テキストを意味する部分文字列または全文文字列の検索を実現するためにjQueryプラグインを構築する必要がありました。 Document.evaluate() | MDN
"p"要素でのみ "アーキテクチャ"という単語を検索し、部分一致する文字列を検索します(<p>todays architecture in Europe</p>
では "true")。テキスト全体の一致(<h2>architecture</h2>
)。
var found = $('div#pagecontent').findtext('architecture','p',true);
検索結果は、通常どおり使用できる通常のjQueryオブジェクトです。
found.css({ backgroundColor: 'tomato'});
検索トラフ文書全体及びこのようなすべてのノードタイプ(部分的な結果)
var found = $('body').findtext('architecture','',true);
のみが正確
var found = $('div#pagecontent').findtext('architecture');
に一致するために、上記使用例は、次のように変更することができますプラグイン自体は、 "要素"の単一の "e"の複数形である変数 "es"を表示します。そして、あなたはどのように結果が反復され、どのように表示され、f = f.add($(e))
( "f"は "found"の略語)でオブジェクトの束に集められます。関数の開始は、完全または部分検索(条件の場合は「c」)および検索の文書範囲(「d」)など、さまざまな条件を処理します。
必要whereeverそれは可能性の最大値を表していないことがあり、最適化されてもよいが、それは、現時点では私の最高の知識を表し、エラーなしで実行されていて、それがうまくいけば、あなたの質問に答えることがあります。ここにあります:
(function($) {
$.fn.findtext = function(s,t,p) {
var c, d;
if (!this[0]) d = document.body;
else d = this[0];
if (!t || typeof t !== 'string' || t == '') t = '*';
if (p === true) c = './/'+t+'[contains(text(), "'+s+'")]';
else c = './/'+t+'[. = "'+s+'"]';
var es = document.evaluate(c, d, null, XPathResult.ANY_TYPE, null);
var e = es.iterateNext();
var f = false;
while (e) {
if (!f) f = $(e);
else f = f.add($(e));
e = es.iterateNext();
}
return f || $();
};
})(jQuery);
あなたはこれを読んでいますか? https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript問題を解決できない場合は、現在のコードを表示してください。 –
私はこれを通過します! @ Quasimodo'sclone –
これを解決できましたか? – Yoiku