0

!divide!ドキュメント内の特定のマーカーをターゲットにする方法を探します--divide--テキスト

次に、それをターゲットにして!divide!、テキストを折り返しながら を削除し!divided!ます。このような:

Lorem ipsum dolor !divide! sit ametとなる >>

<p>Lorem ipsum dolor</p> <p>sit amet</p>

Lorem !divide! ipsum dolor !divide! sit ametとなる >>

<p>Lorem</p> <p>ipsum dolor</p> <p>sit amet</p>

これは..まあ、これは私がこれまでに持っているものです。何よりも、自分の考えをまとめて、ここで探しているものを伝えようとしているのは私です: http://jsfiddle.net/PvMJL/2/

4

2 に答える 2

2

.TextContこれにより、ネストされた要素がある場合の問題を回避できます。それが起こらない場合は、not()[docs]メソッドを取り除くことができます。

var with_dividers = $('.TextCont:contains("--divider--")')
               .not('> .TextCont:contains("--divider--")');


with_dividers.html(function(i,htm) {
    return '<p>' + htm.split('--divider--').join('</p><p>') + '</p>';
});

例: http://jsfiddle.net/CFLV4/

また、重複した ID は無効であるため、ID をクラスに変更しました。


編集:説明するために、JavaScript では、開始タグと終了タグを追加しません。要素全体を扱うという観点から考える必要があります。

上記のコードでは、html()[docs]メソッドに関数が渡されます。関数の戻り値は、要素の新しいコンテンツです。htmパラメータには、現在のコンテンツの文字列が渡されます。

したがって、既存のコンテンツを取得して を実行すると.split('--divider--')、次のような配列が得られます。

['<span>Lorem</span>',
  '<a href="#">ipsum</a>',
  'dolor sit amet.'
]

ご覧のとおり、--divider--テキストは削除され、文字列は元の場所で分割されています--divider--

次に、結合テキストとして.join()使用して、配列に対してa を実行し、次のようにします。'</p><p>'

'<span>Lorem</span></p><p><a href="#">ipsum</a></p><p>dolor sit amet.'

...しかし、もちろん、開始タグと終了タグがないため、それらを開始タグと終了タグに追加します。コードは次のようになります。

'<p>' + htm.split('--divider--').join('</p><p>') + '</p>'

...最終的には次のようになります。

'<p><span>Lorem</span></p><p><a href="#">ipsum</a></p><p>dolor sit amet.</p>'

それが関数の戻り値なので、新しい内容になります。

于 2011-08-08T20:49:03.550 に答える
0

これを試して

var textToSearch = "!divide!"
$('containerSelector:contains("'+ textToSearch +'")').each(function(){
   $(this).html("<p>" + $(this).text().replace(textToSearch, "</p> <p>") + "</p>");
});
于 2011-08-08T20:45:25.327 に答える