【问题标题】:jQuery - convert <br> and <br /> and <p /> and such to new linejQuery - 将 <br> 和 <br /> 和 <p /> 等转换为新行
【发布时间】:2010-08-01 08:38:17
【问题描述】:

jQuery - 你如何将 &lt;br&gt;&lt;br /&gt;&lt;p /&gt; 等转换为新行?

jQuery 是否有内置的 br2nl() 函数 - 这是为了将新的行标签转换为用户友好的文本字段版本。

【问题讨论】:

  • 请注意,PHP 的nl2br 不会替换换行符序列,而是在其前面插入&lt;br /&gt;。所以例如\r\n 变为 &lt;br /&gt;\r\n 而不仅仅是 &lt;br /&gt;
  • 这可以解释为什么在 nl2br reconvert 之后换行符总是如此间隔!

标签: jquery newline


【解决方案1】:

你可以像这样创建一个函数:

jQuery.fn.nl2br = function(){
   return this.each(function(){
     jQuery(this).val().replace(/(<br>)|(<br \/>)|(<p>)|(<\/p>)/g, "\r\n");
   });
};

并像以下任何一种方式一样使用它:

$(':input').nl2br();
$('textarea').nl2br();
$('#textarea_id').nl2br();

【讨论】:

  • /(&lt;br&gt;)|(&lt;p&gt;&lt;\/p&gt;)/g 也捕捉到&lt;br /&gt; 吗?
  • 为您的插件更新了正则表达式:/(&lt;br\s*\/?&gt;)|(&lt;p&gt;&lt;\/p&gt;)/gi。不知道&lt;p&gt;应该怎么用,里面有内容吗?
  • @sAc:您要求我发表评论:正则表达式在语法上是正确的。捕获组似乎是多余的(即您可以省略括号,但对于这种情况它仍然是正确的)。它不会匹配"&lt;p/&gt;",但可以很容易地添加为第四个备用。我对 jQuery 没有太多经验来评论那部分。我不愿投票,因为我希望有比正则表达式更好的 HTML 转换方法。
  • @polygenelubricants:感谢您的解释,这很有帮助:)
  • 不应该是br2nl作为函数名吗?尝试编辑您的帖子,但已被拒绝。
【解决方案2】:

如果你想获取一大块 html 并用换行符替换
标签和自闭合标签,请执行以下操作:

$('#element-containing-html-to-replace').html().replace(/(<br>)|(<p><\/p>)/g, "\n");

应该返回一个容器的 HTML 字符串,这些标签被换行符替换。

【讨论】:

    【解决方案3】:

    如果您想替换 html 元素本身,可以使用此代码:

    $('body').find('br').replaceWith("\n");
    $('body').find('p').each(function() {
        $(this).replaceWith("\n" + $(this).text() + "\n");
    });
    

    【讨论】:

    • 是需要\r\n 还是只需要\n
    【解决方案4】:

    我不知道,但你可以使用"\r\n"

    编辑:
    归功于@sAc,但已更新为实际替换值和更好的正则表达式:

    jQuery.fn.nl2br = function(){
        return this.each(function(){
            var that = jQuery(this);
            that.val(that.val().replace(/(<br\s*\/?>)|(<p><\/p>)/gi, "\r\n"));
        });
    };
    jQuery("textarea").nl2br();
    

    【讨论】:

    • 使用替换 \r\n 的问题是在 Windows 系统上,\n 似乎没有得到正确处理
    • 对我来说没问题。例如,在此页面上的 Firebug(或任何控制台)中尝试以下操作:$("#wmd-input").val("test\r\ntest2");
    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多