jQuery:只包装第一个和第二个孩子,而不是其他孩子

时间:2010-09-03 17:31:57

标签: javascript jquery children wrapall

在我的实际代码中:

<div id="mother">
  <div id="child-01"></div>
  <div id="child-02"></div>
  <div id="child-03"></div>
  </ul>

我需要制作:

<div id="mother">
  <div id="myWrap">
    <div id="child-01"></div>
    <div id="child-02"></div>
  </div>
  <div id="child-03"></div>
  </ul>

我正在使用wrap,。wrapAll()和孩子们,但我被困住了。

如果在我的实际代码中我有:

<div id="mother">
  <div id="child-01"></div>
  <div id="child-02"></div>
  <div id="child-03"></div>
  </ul>

  <div id="uncle">
    <div id="cousin-01"></div>
    <div id="cousin-02"></div>
    <div id="cousin-03"></div>
    </ul>

我如何制作:

<div id="mother">
  <div id="myWrap">
    <div id="child-01"></div>
    <div id="child-02"></div>
    <div id="cousin-02"></div>
  </div>
  <div id="child-03"></div>
  </ul>

4 个答案:

答案 0 :(得分:7)

首先,Adam表示从您的id属性中删除#前缀。同样匹配您的结束标记,目前您有一个</ul> </div>

然后,你可以使用:lt().wrapAll()这样做:

$("#mother div:lt(2)").wrapAll("<div id='myWrap'></div>");

这使得所有内容都少于索引2(0和1是前2个),然后包装它。 You can test it here

答案 1 :(得分:3)

从HTML ID中删除#。

$("#mother div:eq(0), #mother div:eq(1)").wrapAll("<div id='father'></div>")

答案 2 :(得分:1)

sharp不应该是id的一部分。然后你可以这样做:

$('#child-01, #child-02').wrapAll('<div id="#mywrap" />');

答案 3 :(得分:-1)

$(document).ready(function(){
  $(".new-grid__item:nth-child(1), .new-grid__item:nth-child(2)").wrapAll('<div class="child"></div>');
});