次の要素を想定してみましょう (末尾と先頭のスペースを探します)。
<p>
<span class="item">Lorem Ipsum is simply dummy text </span><span class="item">of the printing and typesetting</span><span class="item"> industry.</span>
</p>
http://jsfiddle.net/SQuUZ/に示されている奇妙な動作
のため、すべてのスペースを に置き換えたい(すべてのブラウザーについてはわかりませんが、最新の Chrome と Firefox はどちらも同じように動作します)。display: inline-block
さて、ここではjavascriptがオプションであるため、jQueryもそうです。
$('p').text($('p').text().replace(/ /g, ' '));
しかし、それは をエスケープし、
になりますa mess of entities
。
明らかに、そのような目的のために以下を使用できます$('p').html()
:
$('p').html($('p').html().replace(/ /g, ' '));
しかし、これはさらに悪いことです。なぜなら、
タグ自体にも追加されるからです:
<p>
<span class="item">Lorem Ipsum is simply dummy text </span><span class="item">of the printing and typesetting</span><span class="item"> industry.</span>
</p>
<!-- TL;DR -->
<span class="item"></span> <!-- is actually invalid... -->
そしてそれはすべてを壊します...
ノート:
<span>
コンテナ内に class を持つ要素だけが存在するわけではitem
ありません (これも必ずしもそうであるとは限りません<p>
)。- 遅い正規表現はオプションです (問題は、正規表現を思いつかないことです...)。
ここにはどのようなオプションがありますか?
アップデート:
実際、その multi-line / single-line になぜそのようなバグがあるのか 誰でも説明できdisplay: inline-block;
ますか? (上記のフィドルリンクを参照して、調べてください...)
質問は表示に移行されました: inline-block; 奇妙なスペーシング動作