2011-06-25 12 views
9

jQueryまたはプレーンJavascriptを使用してページに数値を配置する方法があるかどうかは疑問です。ページ上にあるjQueryまたはJavascriptを使用してページ上の番号を選択してください。

セイ「6月23日を」:

は、ここで私が何をしたいのです。私がやりたいことは、番号の前にある<span>セレクタを追加して追加できるようにすることです。

:contains()をjQueryとともに使用すると、数字だけでなく、すべてが選択されます。

これらの文字列は、私が取り組んでいるWordpressテーマによってラッピング要素なしで生成されており、は番号を選択したいだけです。

助けていただけたら幸いです!それについても考えてくれてありがとう。
-George

+1

あなたの日付が正確な要素を知っていますか?たぶん正規表現を使って日付を見つけることができますか? – Marnix

+1

+1興味深い質問 – leon

答えて

9

テキストノードを見て、番号が折り返された更新されたコンテンツに置き換えることができます。

var regex = /(\d+)/, 
    replacement = '<span>$1</span>'; 

function replaceText(el) { 
    if (el.nodeType === 3) { 
     if (regex.test(el.data)) { 
      var temp_div = document.createElement('div'); 
      temp_div.innerHTML = el.data.replace(regex, replacement); 
      var nodes = temp_div.childNodes; 
      while (nodes[0]) { 
       el.parentNode.insertBefore(nodes[0],el); 
      } 
      el.parentNode.removeChild(el); 
     } 
    } else if (el.nodeType === 1) { 
     for (var i = 0; i < el.childNodes.length; i++) { 
      replaceText(el.childNodes[i]); 
     } 
    } 
} 

replaceText(document.body); 

例:http://jsfiddle.net/JVsM4/

これは、既存の要素、およびそれらに関連するjQueryのデータに損傷を行いません。


EDIT:あなたはそれを少しjQueryを使って少し短くすることができます:

var regex = /(\d+)/g, 
    replacement = '<span>$1</span>'; 

function replaceText(i,el) { 
    if (el.nodeType === 3) { 
     if (regex.test(el.data)) { 
      $(el).replaceWith(el.data.replace(regex, replacement)); 
     } 
    } else { 
     $(el).contents().each(replaceText); 
    } 
} 

$('body').each(replaceText); 

例:正規表現がgグローバル修飾子が必要であることをhttp://jsfiddle.net/JVsM4/1/

注意を。

おそらく少し遅いので、DOMがかなり大きい場合は、非jQueryバージョンを使用します。

+3

+1は正解です。 – thirtydot

0

日付はどのような形式であるかによって異なります。

多くの異なる正規表現を使ってこのウェブサイトを見つけました(通常のテキストを検索しているだけなので)。

これはあなたの日付(DDのMMMのYYYY)のためのあなたのフォーマットである場合、これは良いオプションだ:それはあなたの日付がすべてのページに対して同じであることを、テンプレートであるため、http://regexlib.com/REDetails.aspx?regexp_id=405

私が想定しています。フォーマットも同じです。正規表現をよく定義すると、テンプレートのすべてのテキストに正規表現を使用できます。

+0

入力していただきありがとうございますが、それは私が探しているフォーマットされていない日付です。ちょうど数字で、必ずしも任意の形式ではありません。 – ggwicz

+0

**ありがとうございました** @Patrick DWのソリューションは素晴らしいです。 ありがとうございました! – ggwicz

1

大声で考えてみましょうが、これはうまくいくと思いますか?

document.body.innerHTML = document.body.innerHTML.replace(/(\d+)/g, "<span class='number'>$1</span>") 
+0

[0-9] + = \ d +、そうですか? – leon

+0

@andreas それは数字をつかむようですが、私は 'span'を前に付けて追加したいだけです。 1ドルで番号が置き換えられますか? (私はjavascriptのnoobです) – ggwicz

+0

@leon、もちろんそうです。私の返信を編集しました。 –

関連する問題