将父级添加到jquery中的一组节点

时间:2015-11-30 07:47:08

标签: javascript jquery html

所以我有以下结构:

  <h3>I.</h3>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    <ol>    
        <li>1.</li>
        <li>2.</li>
        <li>3.</li>
    </ol>
    <p>Some text</p>

    <h3>II.</h3>
            <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>

    <p>Some text</p>
    <ol>    
        <li>1.</li>
        <li>2.</li>
        <li>3.</li>
    </ol>
    <h3>III</h3> 
    etc

我想以这种方式添加div元素:

  <h3>I.</h3>
   <div>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    <ol>    
        <li>1.</li>
        <li>2.</li>
        <li>3.</li>
    </ol>
    <p>Some text</p>
   </div>
    <h3>II.</h3>
   <div>
            <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>

    <p>Some text</p>
    <ol>    
        <li>1.</li>
        <li>2.</li>
        <li>3.</li>
    </ol>
  </div>
    <h3>III</h3> 
    etc

我设法弄清楚如何将元素提升到下一个h3,但后来我被卡住了。

var elements = $("h3").nextUntil("h3");
            elements.wrapAll("<div>");

2 个答案:

答案 0 :(得分:5)

由于有多个h3元素,您需要循环它们并在循环中使用nextUntil()

$('h3').each(function() {
    $(this).nextUntil('h3').wrapAll('<div />');
});

Example fiddle

答案 1 :(得分:0)

$('h3').each(function() {
    $(this).nextUntil('h3').wrapAll('</div>');
});

请试试这个。