Javascript 如何包装由<;分隔的文本节点;br>&书信电报;Br>;用自己的<;p>;标签?

Javascript 如何包装由<;分隔的文本节点;br>&书信电报;Br>;用自己的<;p>;标签?,javascript,jquery,html,web-services,Javascript,Jquery,Html,Web Services,我从一个无法修改的Web服务返回的内容返回如下数据: <div id="entrance" style=""> Habilitação / Diploma de Ensino Medio Diploma de Ensino Pre Universitario <br> <br> Diploma Record of study </div> Habilitação/恩西诺大学预科文凭 学历 如何使用jQu

我从一个无法修改的Web服务返回的内容返回如下数据:

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

Habilitação/恩西诺大学预科文凭


学历
如何使用jQuery将这两句话包装在单独的标记中?我知道我可以用。包装,但那会包装全部内容。我需要正则表达式吗

谢谢, 托马斯

更新:

我的要求变为需要一个列表而不是段落,因此使用下面的答案,我稍微修改了一下,将其用
  • 包装,然后整个内容用
      包装

      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 />');
      
      jQuery('#入口').show();
      jQuery('#entry').html(数据).contents().each(函数)(){
      if(this.nodeType==3)jQuery(this.wrap(“
    • ”); else jQuery(this.remove(); }); jQuery(“#入口”).wrapInner(“
        ”);
    • 那么:

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

      ”); }否则{ $(this.remove(); } });

      现场演示:

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

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

      $('#entrance').contents().each(function(i,el) {
          if ($.trim($(this).text()).length) {
              $(this).wrap('<p>');
          } else {
              $(this).remove();
          }
      });​
      
      $('#入口').contents().每个(函数(i,el){
      if($.trim($(this.text()).length){
      $(this.wrap(“”);
      }否则{
      $(this.remove();
      }
      });​
      

      唯一的缺点:您的代码还在

      标记之间的换行符外创建了一个段落。@Blazemonger啊,是的。我认为它没有,因为我在我的演示中没有看到它。我会解决的…谢谢,我正在研究使用replaceWith()。就像一个符咒。谢谢,我确实修改了它以使用一个列表。如果您有兴趣,请参阅更新的问题。谢谢,看起来不错。不过,我使用的是上面答案的修改版本,因为我的需求变成了需要列表而不是段落。