3

我有这样的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,'');
4

4 回答 4

1

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

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/

于 2012-04-11T07:33:12.147 回答
0

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

于 2012-04-11T07:24:14.160 回答
0

试试这个:

var html = '>' + $('#foo').html() + '<';
html = html.replace(/&nbsp;/g, '').replace(/>\s+</gm, '><');
$('#foo').html(html.substring(1, html.length-1));
于 2012-04-11T07:46:52.900 回答
0

最安全的方法是找到所有文本节点并将它们的 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/

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

于 2012-04-11T07:48:12.727 回答