-1

我正在处理一个像这样格式化文本块的 CMS。

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit。<br>Vivamus lacus ipsum, semper non consequat eu, facilisis at lectus。Vestibulum et magna ac <br>odio semper porttitor lacinia congue orci。Vivamus suscipit eleifend dolor,在 hendrerit <br>turpis bibendum ut。<br><br>Morbi interdum augue et nisl ullamcorper sit amet ornare <br>lorem tempus。Duis nec nisi quis ipsum pulvinar volutpat。Suspendisse venenatis malesuada metus,
nec pretium dui cursus eget。Donec vitae lorem vitae risus dapibus malesuada congue vel nunc。</p>

双行回车<br><br>用于开始新段落。我无法更改 CMS 输出。

由于文本块周围已经有一个开始<p>和结束<p>,我需要首先为结束</p>标记和开始标记切换双行返回<p>标记。像这样:“ <br><br>”=“ </p><p>

然后我需要去掉其余的
标签并用一个空格替换:<br>=" "

我试过这个,

$('#nomorefonts').submit(function () {
    $('br').replaceWith(function () {
        return $('</p><p>').append($(this).contents());
    });
    return false;
});

但它<br>用几个开始和结束标签替换每个</p><p>标签。

编辑:想要的结果是这样的:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit。Vivamus lacus ipsum, semper non consequat eu, facilisis at lectus。Vestibulum et magna ac odio semper porttitor lacinia congue orci。Vivamus suscipit eleifend dolor,在 hendrerit turpis bibendum ut。</p><p>Morbi interdum augue et nisl ullamcorper sit amet ornare lorem tempus。Duis nec nisi quis ipsum pulvinar volutpat。Suspendisse venenatis malesuada metus, nec pretium dui cursus eget。Donec vitae lorem vitae risus dapibus malesuada congue vel nunc。</p>

4

4 回答 4

2

您正在尝试使用$创建新元素,但</p><p>不是元素。

这整个方法似乎有问题,但最好的办法是操纵原始字符串:

$('.block-of-text').html($('.block-of-text').html().replace(/<br>/g, '</p><p>'));
于 2012-04-12T22:20:50.127 回答
0

我认为你最好用这样的东西:

$('#target_container p').each(function(){
    var pThis = $(this);
    var pRaw = pThis.html().split('<br>').join('</p><p>');
    pThis.html(pRaw);
});

'#target_container' 正是您要开始寻找 P 元素实例的地方。替换为适合您的。

更好的是,修补 CMS。

于 2012-04-12T22:22:40.593 回答
0

像这样的东西:

var newHtml = "";
var splitHtml = $("p").html().split("<br>");
for (var i=0; i < splitHtml.length; i++) {
   newHtml += "</p><p>" + splitHtml[i];
}
$("#yourdiv").html(newHtml);
于 2012-04-12T22:25:54.427 回答
0

您是否尝试过replace()?就像是:

$('#nomorefonts').submit(function(){
    var elem=$('#text_box'),formattedStr=elem.html().replace(/<br><br>/g,'</p><p>').replace(/<br>/g,' ');
    elem.html(formattedStr);
    return false;
});
于 2012-04-12T22:26:14.267 回答