可以用 替换空格吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (327)

让我们假设以下元素(查找尾部和前导空格):

<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>

我想用&nbsp;,应付display: inline-block这里显示了奇怪的行为:http://jsfiddle.net/squuz/(不知道所有的浏览器,但最新的Chrome和Firefox都是一样的)。

现在,由于javascript是这里的一个选项,jQuery也是一个选项,所以我可以:

$('p').text($('p').text().replace(/ /g, '&nbsp;'));

但它逃过了&nbsp;结果变成a&nbsp;mess&nbsp;of&nbsp;entities...

显然,为了这些目的我们可以用$('p').html()*

$('p').html($('p').html().replace(/ /g, '&nbsp;'));

但是这个更糟,因为它也增加了&nbsp;在标签本身内:

<p>
    <span&nbsp;class="item">Lorem&nbsp;Ipsum&nbsp;is&nbsp;simply&nbsp;dummy&nbsp;text&nbsp;</span><span&nbsp;class="item">of&nbsp;the&nbsp;printing&nbsp;and&nbsp;typesetting</span><span&nbsp;class="item">&nbsp;industry.</span>
</p>

<!-- TL;DR -->
<span&nbsp;class="item"></span> <!-- is actually invalid... -->

  • 不仅是<span>类元素item在容器内(也可能不一定是<p>)。
  • 慢正则表达式是一种选择(问题是,我不能想出一个...)。

我在这里有什么选择?

问题转移到display: inline-block; weird spacing behavior

提问于
用户回答回答于
$('p').contents().filter(function(){
    return this.nodeType == 3 // Text node
}).each(function(){
    this.data = this.data.replace(/ /g, '\u00a0');
});

所属标签

可能回答问题的人

  • 腾讯云数据库 TencentDB

    腾讯云 · 产品团队 (已认证)

    302 粉丝2 提问51 回答
  • EatRice

    17 粉丝0 提问183 回答
  • 华讯云

    1 粉丝0 提问156 回答
  • 成都加米谷大数据

    11 粉丝0 提问16 回答

扫码关注云+社区

领取腾讯云代金券