Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从html()变量中删除所有空格和制表符_Javascript_Jquery - Fatal编程技术网

Javascript 从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,我只想得到HTML结构

<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();