如何使用javascript删除html标签之间的空白?

时间:2015-01-08 13:19:25

标签: javascript jquery html

我在JavaScript变量中有一些HTML内容:

var string="<tr>  <td> data 1 </td> <td> data 2 </td>   <td> data 3 </td></tr>";

我只想删除HTML标记之间的空格。列数据中的空格必须保持不变。

string.replace(/\n/g, "");
string.replace(/[\t ]+\</g, "<");
string.replace(/\>[\t ]+\</g, "><");
string.replace(/\>[\t ]+$/g, ">");

我尝试了上面的代码。但这没有奏效。有人请帮我解决这个问题。

3 个答案:

答案 0 :(得分:13)

string= string.replace(/>\s+</g,'><');

答案 1 :(得分:3)

有一个jQuery解决方案:

使用.contents().filter()查找所有仅限空格的文本节点并删除()它们,如下所示:

var $e = $("<tr>  <td> data 1 </td> <td> data 2 </td>   <td> data 3 </td></tr>");
$e.contents().filter(function() {
  return this.nodeType = Node.TEXT_NODE && /\S/.test(this.nodeValue) === false;
}).remove();
console.log($e.html());
// <td> data 1 </td><td> data 2 </td><td> data 3 </td>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Check console!

以上示例过滤了tr的子项。但是,也可以检查后代或做出复杂的决定,例如在内联元素之间保留空格,但在块元素之间删除。

答案 2 :(得分:0)

忽略&lt;和&gt;文本节点内的字符:

var string = "<p>lol</p>  <p>let's remove <span>spaces between tags</span> </p>";
var rexp = new RegExp(">[\t\s ]*<", "g");
var result = string.replace(rexp, "><");

js fiddle here:http://jsfiddle.net/4cfgnfrx/

以您的示例:http://jsfiddle.net/4cfgnfrx/1/