我有这样的html。
<td id="foo">
<img src="foo.png" /> <img src="foo.png" /> <img src="foo.png" />
</td>
上面的 HTML 包含空格,而且
我
想使用 jQuery 删除它。
怎么做?
已经尝试使用此脚本但无法正常工作。
$('#foo').text().replace(/ /g,'');
我有这样的html。
<td id="foo">
<img src="foo.png" /> <img src="foo.png" /> <img src="foo.png" />
</td>
上面的 HTML 包含空格,而且
我
想使用 jQuery 删除它。
怎么做?
已经尝试使用此脚本但无法正常工作。
$('#foo').text().replace(/ /g,'');
我认为您需要使用 contents() 然后过滤掉所有纯空格的 textNodes
var nodes = $("#foo").contents().filter(function() {
return this.nodeType == 3 && /^(\s| )*$/.test(this.nodeValue);
}).remove();
//console.log($("#foo").html());
可能是这样的?如果你只有图像,那么你可以删除&& this.data == " "
部分
我已经编辑它寻找空格,现在,jsfiddle 测试:http: //jsfiddle.net/Rurn2/
你试过这个:$('#foo').html($('#foo').html().replace(/ /g,''));
?您的代码将根据元素中的文本返回一个不含空格的字符串。但是如果你想覆盖元素的文本,你必须在大括号之间输入新的字符串。
试试这个:
var html = '>' + $('#foo').html() + '<';
html = html.replace(/ /g, '').replace(/>\s+</gm, '><');
$('#foo').html(html.substring(1, html.length-1));
最安全的方法是找到所有文本节点并将它们的 nodeValue 与您正在寻找的内容进行比较,然后删除仅包含空格的节点。直接对innerHTML 进行操作充满了困难,因为您必须确保您没有弄乱实际标签中的内容(例如,应该存在的空白)。对文本节点进行操作仅使用浏览器来保证您的安全。您可以像这样找到与您的条件匹配的所有文本节点:
$("#foo").contents().filter(function() {
if (this.nodeType == 3) {
return(this.nodeValue.replace(/\s| /g, "") == "");
}
return(false);
}).remove();
你可以在这里看到它的工作:http: //jsfiddle.net/jfriend00/RNTbT/
仅供参考,这个版本甚至可以处理由空格和
. 它的工作原理是删除所有空格,
然后查看是否有任何剩余。如果不是,那么它是一个仅限空格的文本节点,因此应该将其删除。