【问题标题】:Why won't jQuery's .text() recognize \n?为什么 jQuery 的 .text() 不能识别 \n?
【发布时间】:2014-07-29 12:39:32
【问题描述】:

我正在尝试在页面上打印 html 文本。 现在我在做

$("#generate_html_button").click(function(){
    var generated_html_text = $("#visual_form").html();
    $("#generated_html_text").text(generated_html_text);//generated_html_text is just a <div> element
  });

如果我将 generated_html_text 打印到控制台,它会看起来像

<div class="dropDown form-group ui-draggable ui-draggable-handle col-xs-12" id="0" style="display: block;">
          <div>
            <label>dropdown</label>
          </div>
          <div class="form-group">
            <select class="form-control">
              <option value="option1">Option 1</option>
              <option value="option2">Option 2</option>
            </select>
          </div>
        </div> 

控制台将使用正确的格式。当我使用.text() 将文本打印到我的页面时,它会忽略\n 并仅将其打印在一长行中。

<div class="dropDown form-group ui-draggable ui-draggable-handle col-xs-12" id="0" style="display: block;"> <div> <label>dropdown</label> </div> <div class="form-group"> <select class="form-control"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> </select> </div> </div>

大多数人建议使用 .replace(),但是当我尝试 generated_html_text = generated_html_text.replace(/\n/g, '&lt;br/&gt;'); 时,这将产生相同的结果,只是在没有格式化的情况下到处都是
,我试图避免在我的输出中出现 &lt;br&gt;s。我也尝试将.text() 更改为.html(),但它只是渲染元素。为什么 .text() 不能识别现有的\n

【问题讨论】:

    标签: javascript jquery html string formatting


    【解决方案1】:

    要使空格有意义,请尝试在容器元素上使用 CSS white-space: pre-wrap

    【讨论】:

      【解决方案2】:

      来自http://php.net/manual/en/function.nl2br.php

      <?php
      echo nl2br("foo isn't\n bar");
      ?>
      

      将输出:

      foo isn't<br />
      bar
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-28
        • 2011-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        • 2011-06-05
        相关资源
        最近更新 更多