2012-02-21 9 views
0

特定の単語を含むすべてのデータを並べ替えるためにJQueryを使用したいと思います.find()フレームワークは、文字列内の項目ではなく、JQueryがテキストを突き刺す置換と再配置

データが現在のように配置されている:

<div>A single zones 1,2 and 3 Tube ticket to £2.20</div> 
<div>A single zones 1,2 and 4 Bus ticket to £2.20</div> 
<div>A zones 1,2 and 3 Ferry ticket to £2.20</div> 

私はDIVはそれで単語「一」を持っている場合見つけて、それならば、チケットの種類が反映されるように、ゾーンデータの後にそれを移動したいです独身だ。

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('div').each(function(){ 
      if($(this).find('single')) { }; 
     }); 
    }); 
</script> 

私はそれまでに得ています。明らかにそれはうまくいかないが。何か案は?

EDITこれは、私は結果がなりたいものです。

<div>A zones 1,2 and 3 single Tube ticket to £2.20</div> 
    <div>A zones 1,2 and 4 single Bus ticket to £2.20</div> 
    <div>A zones 1,2 and 3 Ferry ticket to £2.20</div> 
+0

あなたは何を意味するのです」ゾーンデータの後に移動しますか?あなたは望みの結果の例を挙げることができますか? (そして、その間に:['.replace()' function](https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/replace)) – nnnnnn

+0

私の質問を更新しました.. –

答えて

1

チェックアウト:

​$("div:contains(single)").html(function(i,currentVal) { 
    return currentVal.replace(/single /,"") 
        .replace(/ (Tube|Bus|Ferry)/," single $1"); 
});​​​​​​​​​​​​​​​ 

デモ:http://jsfiddle.net/nnnnnn/R3V63/

これは":contains" selector "single"という単語を持つすべてのdivを検索し、.html() methodをコールバック構文と一緒に使用すると、個々の値が1つずつ処理され、指定されたコールバック関数が各要素の現在のhtmlコンテンツと戻り値は新しいコンテンツになります。

"single"という単語を "移動"するには、最初に空の文字列に置き換えて、 "Tube"、 "Bus"または "Ferry"のいずれかの単語の直前に挿入します。明らかに、他のモードのトランスポートが含まれていれば、正規表現を修正することができます。 「Zone 1」、「Zone 2 and 3」などのバリエーションを考えれば、「Zone 1、2、3」でマッチングして正しいスポットを見つけようとすると、あまりにも面倒なようでした。

詳細については、doco on .replace()を参照してください。 。

EDIT: "ゾーン..."(すべての後にそれほど手間)に一致するように、別の正規表現:

.replace(/(zones?(?:[\d, ]|and)+) /,"$1 single "); 

(正常に動作するようです:http://jsfiddle.net/nnnnnn/R3V63/4/

+0

+1、素晴らしい解決策です。 – SpaceBison

0

あなたはこのような何か行うことができますcontainsセレクタ

+0

面白いですが、単語を抽出して移動する –

+0

単語「Single」と「Zones 1、2 and 3」の周りに 'SPAN'タグをラップする方法はありますか?簡単にそれらを取り出して' .append( ) 'または' .prepend() '特定のdiv内のid、classnameまたは位置に基づいて – SpaceBison

+0

ゾーンの後に表示される数字の数はわかりません。彼らはそれを.find( 'ゾーン){それに続く数字}に伝える方法になるのだろうか? –

関連する問題