2011-01-30 6 views
1

それぞれの投稿に最適化された別のキーワードがあります。私はポスト・コンテンツを取り上げ、強力なタグでキーワードの最初のインスタンスをラップするルーチンが必要です。要素の属性コレクション(title、src、altなど)の(1)部分の場合、キーワードを飾りたいとは思わない。そして、もしそれがh1-6見出しのタグであれば、私はそれを飾るつもりはありません。jQueryをライブのhtmlパーサ/ノード置換ユーティリティとして使用できますか?

私はdom traversalとHtmlの解析/置換のためのツールがたくさんあることを知っています。 jQueryでこれを行うことはできますか?

誰かがhtmlパーサーとしてjQueryを使用している例はありますか?

+1

「パーサー」を定義します。あなたは何をする必要がありますか? –

+0

jQueryはDOMをトラバースすることで非常に強く、私たちがより良い答えを与えることができる場合は、構文解析/置換によって正確に何を意味するのかわかりません –

+0

http://api.jquery.com/category/トラバース/&http://api.jquery.com/category/manipulation/はあなたに印象を与えるはずです。 – polarblau

答えて

0

これはあなたの探しているものかもしれません。 HTMLを直接解析するべきではありません。 DOMをトラバースしてテキストノードを探す方が良いでしょう。

var word = "foo"; 

var nodes = $("postSelector").find("*"); // get all elements 

for (var i = 0; i < nodes.length; i++) { 
    // get the node 
    var node = nodes.eq(i); 
    // if the tagName is a h1-h6 then continue 
    if (/h\d/.test(node[0].tagName)) continue; 
    if (node.text().indexOf(word) > -1) { 
     // handle the textual replacement. 
     var text = node.text(); 
     text.replace(word, "<strong>" + word + "</strong>"); 
     node.html(text); 
    } 
} 

あなたがが解決する全く別の問題だ

<p> fo <span> o </span> </p>

のようなあなたの言葉でHTMLを入れ子にしている場合、これは問題が発生します。

+0

あなたの答えに感謝します。 「postSelector」とは何を指していますか? –

+0

@ScottBあなたの投稿への参照は少し曖昧だったので、投稿を得るために何らかのセレクタを持つ必要があります。あなたのHTMLコードに投稿が何であるか分かりません。 – Raynos

+0

私は$ postで参照してください私はwordpressのpost_contentオブジェクトを参照しています –

関連する問題