替换CMS格式化内容中的标记

时间:2012-04-12 22:03:08

标签: javascript

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

  

<p> Lorem ipsum dolor坐下来,念诵adipistur   elit。<br> Vivamus lacus ipsum,semper non consequat eu,facilisis at   lectus。 Vestibulum et magna ac <br> odi semper porttitor lacinia   congue orci。 Vivamus suscipit eleifend dolor,in herererit <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简历lorem vitae risus dapibus malesuada congue   vel nunc。</p>

双行返回<br><br>用于启动新段落。我无法更改CMS输出。

由于文本块已经有一个开口<p>并且在其周围关闭<p>,我需要首先为结束</p>标记和开头{{切换双行返回标记1}}标签。像这样:“<p>”=“<br><br>

然后我需要将其余的剩余
标签去除,只用空格替换:</p><p> = <br>

我试过了,

" "

但它会将每个$('#nomorefonts').submit(function () { $('br').replaceWith(function () { return $('</p><p>').append($(this).contents()); }); return false; }); 代码替换为多个打开和关闭<br>代码。

编辑:所需的结果是:

  

</p><p> Lorem ipsum dolor坐下来,精神恍惚。 Vivamus   lacus ipsum,semper non consequat eu,facilisis at lectus。前庭   et magna ac odi semper porttitor lacinia congue orci。 Vivamus   suscipit eleifend dolor,in hendrerit turpis bibendum ut。<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><p>

4 个答案:

答案 0 :(得分:2)

您尝试将$用于create a new element,但</p><p>不是元素。

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

$('.block-of-text').html($('.block-of-text').html().replace(/<br>/g, '</p><p>'));

答案 1 :(得分: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。

答案 2 :(得分: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);

答案 3 :(得分: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;
});