Javascript 从html()变量中删除所有空格和制表符
我的页面上有一个隐藏的div,我只想得到HTML结构Javascript 从html()变量中删除所有空格和制表符,javascript,jquery,Javascript,Jquery,我的页面上有一个隐藏的div,我只想得到HTML结构 <div class="html-to-store visuallyhidden"> <span class="item"> <p>Test</p> <p>Another Test</p> </span> <span class="item"> <p>Second
<div class="html-to-store visuallyhidden">
<span class="item">
<p>Test</p>
<p>Another Test</p>
</span>
<span class="item">
<p>Second Test</p>
<p>Dadada</p>
</span>
</div>
现在,这很好,但我希望能够在一行中获得所有HTML标记
这是:
试验
另一个测试
第二次测试
达达达
我想要的是:
<span class="item"><p>Test</p><p>Another Test</p></span><span class="item"><p>Second Test</p><p>Dadada</p></span>
测试另一个测试第二个测试数据
<代码> > p>解决方案是删除所有空白文本节点,因此尝试
$(function () {
$('.html-to-store').contents().contents().addBack().filter(function () {
return this.nodeType == 3 && $.trim(this.nodeValye) == ''
}).remove();
var storeThis = $('.html-to-store').html();
$('textarea').val(storeThis);
});
演示:
如果您不想修改dom中的html结构,那么请使用类似克隆的方法,使用一些粗糙的正则表达式怎么样?拆分并合并,删除空白
var storeThis=$('.html to store').html().split(/>[\s]*用于此目的的微型jQuery插件:
(function( $ ){
$.fn.getUnformattedText = function () {
return $.trim($(this).html()
.split(/\>[\n\t\s]*\</g).join('><')
.split(/[\n\t]*/gm).join(''));
}
})( jQuery );
$('.html-to-store').getUnformattedText();
小提琴:
(function( $ ){
$.fn.getUnformattedText = function () {
return $.trim($(this).html()
.split(/\>[\n\t\s]*\</g).join('><')
.split(/[\n\t]*/gm).join(''));
}
})( jQuery );
$('.html-to-store').getUnformattedText();
有效!:D我希望我能理解常规表达式,没有人真正理解它们。:)这不处理html字符串前后的换行符和空格。@marionebl是正确的,但我认为它指向了正确的方向。_html..split(/>[\s]*这真的很好,但不幸的是,只适用于3级深度。我真的不知道我的内容在一段时间后会有多深。如果你有多个类名,这是不好的。删除类之间的空格更新以防止类和文本节点损坏。酷,谢谢。这是一个很好的替代公认的答案,我将采取如果我关心我的代码的外观,但现在我只想让这该死的东西工作!非常感谢你的帮助。因为这更干净,前面的答案没有删除所有空白,我决定添加你的答案作为正确的。非常感谢。
$('.html-to-store').getUnformattedText();