如何将由 <br><Br> 分隔的文本节点与它们自己的 <p> 标记包装起来

How can I wrap text nodes separated by <br><Br> with their own <p> tags?

本文关键字:自己的 起来 包装 br Br 文本 分隔 节点      更新时间:2023-09-26

我有来自无法修改的 Web 服务返回的内容,返回的数据如下:

<div id="entrance" style="">
    Habilitação / Diploma de Ensino Medio Diploma de Ensino Pre Universitario 
    <br>
    <br>
    Diploma Record of study 
</div>

如何使用 jQuery 将这两个句子包装在单独的

标签中?我知道我可以使用 .wrap,但这会包装整个内容。我需要正则表达式吗?

谢谢托马斯

更新:

我的要求更改为需要列表而不是段落,因此使用下面的答案,我稍微修改了它以包装

  • ,然后将整个事情包装在一个
      jQuery('#entrance').show();
      jQuery('#entrance').html(data).contents().each(function () {
      if ( this.nodeType === 3 ) jQuery( this ).wrap( '<li />' );
          else jQuery( this ).remove();
      });
      jQuery('#entrance').wrapInner('<ul />');
      
  • 怎么样:

    $( '#entrance' ).contents().each(function () {
        if ( this.nodeType === 3 && $.trim( this.data ) !== '' ) {
            $( this ).wrap( '<p />' );
        } else {
            $( this ).remove();
        }
    });
    

    现场演示:http://jsfiddle.net/ZMD6m/5/

    我的代码将所有非空文本节点转换为包含该文本的段落。将删除所有其他类型的节点。

    此方法使用$(this).text()来查找每个子元素的长度。如果为零,则将其删除,否则将其包装在段落中:

    $('#entrance').contents().each(function(i,el) {
        if ($.trim($(this).text()).length) {
            $(this).wrap('<p>');
        } else {
            $(this).remove();
        }
    });​
    

    http://jsfiddle.net/mblase75/ZMD6m/3/