包含元素中的所有元素,直到出现特定标记

时间:2015-03-16 07:56:26

标签: javascript jquery html css

我想动态地将元素的所有子元素包装在新元素中。我看了jQuery wrap()函数,但它没有达到预期,因为它需要一个元素并用一些新元素包装它,而我想在一些新元素中组合所有子元素。

/*Sample code*/
    <div>
        <ul>
            <li>
                /* All <li> children before <UL> tag, need to be wrapped dynamically within a <span> */
                <span class="doSomting"></span>
                <a href="#">Click Me</a>

                <ul></ul>
            </li>
        </ul>

    /*Expected <li> element*/
    <li>
        <span>
            <span class="doSomting"></span>
            <a href="#">Click Me</a>
        </span>  
        <ul></ul>
    </li>

更新 我希望将所有元素分组,直到<UL>标记出现在<li>内。我已相应更新了代码段。抱歉不明白。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用.wrapAll()

$('li').contents().wrapAll('<span />')

注意:如果您有多个li元素,则必须迭代每个li

$('li').each(function(){
    $(this).contents().wrapAll('<span />')
})

演示:Fiddle


更新

$('div > ul > li').each(function () {
    $(this).children(':not(ul)').wrapAll('<span />')
})

演示:Fiddle