代码之家  ›  专栏  ›  技术社区  ›  Grozav Alex Ioan

将除div外的所有直接对象组(包括文本)包装到新div中

  •  0
  • Grozav Alex Ioan  · 技术社区  · 10 年前

    我试图包装包装类中不是div的每个直接对象组。有什么办法吗

    输入:

    var $code = 
    'Lorem Ipsum
     <p>Foo Bar</p>
     <div class="myclass"></div>
     <p>Foo Bar</p>
     <div class="myclass"></div>'
    
    var $object = $('<div/>').html($code);
    

    所需输出:

     <div class="wrap">
        Lorem Ipsum
        <p>Foo Bar</p>
     </div>
     <div class="myclass"></div>
     <div class="wrap">
        <p>Foo Bar</p>
     </div>
     <div class="myclass"></div>
    

    我尝试过的:

     $object.contents().not('> .myclass').wrap('<div class="wrap"></div>');
    

    有人能帮我吗?我被困在这里了。

    非常感谢你!

    1 回复  |  直到 10 年前
        1
  •  2
  •   Arun P Johny    10 年前

    还没有检查是否有更好的方法,但你可以

    var code =
        'Lorem Ipsum<p>Foo Bar</p><div class="myclass"></div><p>Foo Bar</p><div class="myclass"></div>'
    
    var $object = $('<div/>').html(code);
    
    var $obj = $();
    $object.contents().each(function () {
        if ($(this).hasClass('myclass')) {
            $obj.wrapAll('<div class="wrap"/>');
            $obj = $();
        } else {
            $obj = $obj.add(this)
        }
    })
    $obj.wrapAll('<div class="wrap"/>');
    

    演示: Fiddle