包裹每个直接的对象组,包括文本,除了新div中的div

时间:2014-03-08 08:13:30

标签: javascript jquery html children

我正在尝试在wrap类中包装不是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 个答案:

答案 0 :(得分:2)

没有检查是否有更优化的方法,但你去了

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