段落内のspanタグで各単語を折り返したいと思います。私は段落の中にHTMLタグがないときにうまくいきました。しかし、段落の内部にHTMLタグがあると、それは混乱するでしょう。div内の単語をspanタグ(たとえば)で囲み、div内にHTMLタグがある
ここでは例何のHTMLタグが段落内ではない:
$('div').html(function(i, v) {
return $.trim(v).replace(/(\w+)/g, '<i class="woord">$1</i>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
11111 22222 33333 44444
</div>
しかし、段落内のHTMLタグがある場合、それは次のように混乱を起こっ:
$('div').html(function(i, v) {
return $.trim(v).replace(/(\w+)/g, '<i class="woord">$1</i>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
11111 <span>22222 <small>33333</small></span> 44444
</div>
ありがとうDrunkenPoneyこれを実装しようとしています。彼は一番の努力をしましたが、それは内のスパンの内容を壊しました。
私はブラウザに表示されるすべての単語は、次のよう<i class="woord">
でラップするようにどこ結果はこのようになりたい:
<div>
<i>June</i> <span><i>10</i> <i>sssssss</i></span> <i>ggdgfdf</i>
</div>
彼のコードの結果は以下の通り元span
コード構造が壊れています
<div>
<i class="woord">11111</i> <i class="woord"><span>22222</span></i> <i class="woord"><small>33333</small></i> <i class="woord">44444</i>
</div>
素晴らしい!これはきちんとしたもので正確です。ありがとうたくさん:)あなたが作ったこの頑丈なものを完成させるために、また別のものが私の頭に来ました。このアイデアを別の折り返し置き換えを使って別のHTML要素に適用したいとしたら、このコードブロックをすべて繰り返してからdivと、を変更する必要があるか、コードを繰り返さずにアイデアを適用する方法がありますブロック? –
@MoradHamdyそれはあなたのロジックの複雑さに依存します。 ''を別の要素に置き換えたい場合は、関数wrapHtmlにもう1つのパラメータを追加し、そこに ' 'を置き換えることができます。しかし、 'wrapHtml'の入力は' textNode'だけなので、***異なる要素に含まれている別の単語に別のHTMLラッパー( ''以外)を適用する必要があるならば、それは 'textNode'です。 *** - 親要素(テキストノードを含む)をチェックして、それに応じて対応するタグを適用する必要があります。私はあなたが 'wrapHtml'関数のコードを変更できると思う。 – Hopeless
私のコメントははっきりしていないと思う。私は、このような別の場所でこのコードを複数回適用することを意味します:http://codepen.io/moradxd/pen/xqPyya私はjsコードを複製していることがわかります。例えば '.wrap-1'のようなcontainerSelector、' 'のようなwordTag、' .word-1'のようなwordClassのようなプラグインのようなアプローチを実装する方法はありますか、あるいはjsコードの繰り返しを簡略化すると思います。これがあなたのために何か複雑なものになるならば、問題はありません。私は本当にあなたがこれまでに作ったことに本当に感謝しています:) –