删除带有图像的表中的空格

remove whitespace in table with image

本文关键字:空格 图像 删除      更新时间:2023-09-26

我有这样的html。

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

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

已经尝试使用此脚本但不起作用。

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

我认为你需要使用content(),然后过滤掉所有的文本节点,这是一个普通的空间

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

也许是这样的东西? 如果您只有图像,那么您可以删除&& this.data == " "部分

我已经编辑了它寻找空格, 现在,jsfiddle 测试:http://jsfiddle.net/Rurn2/

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

最安全的方法是找到所有文本节点,并将其 nodeValue 与您正在寻找的内容进行比较,并删除仅包含空格的节点。 直接在内部HTML上进行操作充满了困难,因为您必须确保不会弄乱实际标签中的内容(例如应该存在的空格)。 在文本节点上操作仅使用浏览器来确保您的安全。 您可以像这样找到与您的条件匹配的所有文本节点:

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

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

仅供参考,此版本甚至可以处理空格和&nbsp;组合的文本节点。 它的工作原理是删除所有空格和&nbsp;,然后查看是否还剩下任何东西。 如果不是,则它是一个仅空格的文本节点,因此应将其删除。

试试这个:

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