【问题标题】:remove whitespace in table with image用图像删除表格中的空格
【发布时间】:2012-04-23 12:01:16
【问题描述】:

我有这样的html。

<td id="foo">
    <img src="foo.png" /> <img src="foo.png" /> <img src="foo.png" />&nbsp; 
</td>

上面的 HTML 包含空格和 &amp;nbsp;,
我想使用 jQuery 删除它。
该怎么做?

已尝试使用此脚本但无法正常工作。

$('#foo').text().replace(/ /g,'');

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

我认为您需要使用 contents() 然后过滤掉所有纯空格的 textNodes

var nodes = $("#foo").contents().filter(function() {
    return this.nodeType == 3 && /^(\s|&nbsp;)*$/.test(this.nodeValue);
}).remove();

//console.log($("#foo").html());

可能是这样的吗?如果你只有图片,那么你可以删除 &amp;&amp; this.data == " " 部分

我已经对其进行了编辑,它会查找空格,现在,jsfiddle 测试:http://jsfiddle.net/Rurn2/

【讨论】:

  • 如果您还希望删除空格+html 空格和换行符,您可能还需要添加换行符:/^(\s|&amp;nbsp;|\n)*$/ 也可以添加到正则表达式中  \n 例如现在不会被删除
【解决方案2】:

您是否尝试过:$('#foo').html($('#foo').html().replace(/ /g,''));?您的代码将根据元素中的文本返回一个不含空格的字符串。但是如果你想覆盖元素的文本,你必须在大括号之间输入新的字符串。

【讨论】:

  • 您不能从 innerHTML 中删除所有空格,因为这会从 HTML 标记中删除空格。
  • nips,忘了那个空白:D...傻。我建议在此处使用匹配 html 实体的其他答案,或创建一个临时元素 (document.createElement),用 html 填充它,以便将实体转换为空格,并使用该解析字符串。这种方式需要更多的代码,但它(一般来说)是一种更安全的方式来解码/编码 html 实体。如果你想要的只是&amp;nbsp;,那么 jfriend00 提供的答案就可以了,不过
【解决方案3】:

最安全的方法是找到所有文本节点并将它们的 nodeValue 与您要查找的内容进行比较,然后删除仅包含空格的节点。直接对 innerHTML 进行操作充满了困难,因为您必须确保您没有弄乱实际标签中的内容(例如,应该存在的空白)。对文本节点进行操作仅使用浏览器来保证您的安全。您可以像这样找到符合您条件的所有文本节点:

$("#foo").contents().filter(function() {
    if (this.nodeType == 3) {
        return(this.nodeValue.replace(/\s|&nbsp;/g, "") == "");
    }
    return(false);
}).remove();​

你可以在这里看到它的工作原理:http://jsfiddle.net/jfriend00/RNTbT/

仅供参考,这个版本甚至可以处理由空格和&amp;nbsp; 组合而成的文本节点。它的工作原理是删除所有空格和&amp;nbsp;,然后查看是否有任何剩余。如果不是,那么它是一个只有空格的文本节点,所以应该删除它。

【讨论】:

    【解决方案4】:

    试试这个:

    var html = '>' + $('#foo').html() + '<';
    html = html.replace(/&nbsp;/g, '').replace(/>\s+</gm, '><');
    $('#foo').html(html.substring(1, html.length-1));
    

    【讨论】:

    • 这将删除 img 元素上的 img 和 src 中的空格
    • 您可以这样做,因为这也会从 HTML 标记中删除空格。
    • 是的,只是稍微改变一下正则表达式,我更新了答案
    • 现在它不会删除第一个标签之前或最后一个标签之后的空格,并且您的正则表达式也不正确。
    • 注意:只有在没有任何字符串的情况下才能工作。并为您 +1:D
    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2019-04-01
    • 2013-04-06
    • 2013-02-15
    • 1970-01-01
    • 2018-09-29
    相关资源
    最近更新 更多