代码之家  ›  专栏  ›  技术社区  ›  Lucas Dynelight

如何在jQuery中包装两个元素的组?

  •  1
  • Lucas Dynelight  · 技术社区  · 10 年前

    我有以下代码:

    <span>Hello</span>
    <span>Hello</span>
    <span>Hello</span>
    <span>Hello</span>
    <span>Hello</span>
    <span>Hello</span>
    

    我想把它改为:

    <div>
      <span>Hello</span>
      <span>Hello</span>
    </div>
    <div>
      <span>Hello</span>
      <span>Hello</span>
    </div>
    <div>
      <span>Hello</span>
      <span>Hello</span>
    </div>
    

    我该怎么做?

    2 回复  |  直到 10 年前
        1
  •  1
  •   Lucas Dynelight    10 年前

    使现代化

    改用此代码-它更通用,因为它不依赖于父元素中子元素的位置:

    var odds = $("span:odd");
    var evens = $("span:even");
    var i = 0;
    odds.each(function () {
      $(this).add(evens[i]).wrapAll('<div></div>');
      i++;
    });
    

    通过在线搜索找到了答案:

    $("span:nth-child(odd)").each(function () {
      $(this).add($(this).next()).wrapAll('<div></div>');
    });
    

    span:nth-child(odd) 意味着每秒钟 <span> 被选中。 $(this).add($(this).next()) 选择当前 <span> 下一个,然后 .wrapAll 将它们一起包装在 <div> 标签

    希望能有所帮助!

        2
  •  0
  •   Akmal    10 年前

    您可以使用.slice()执行此操作,如下所示:

    var divs = $("div>div");
    for(var i = 0; i < divs.length; i+=2) {
       divs.slice(i, i+2).wrapAll("<div class='new'></div>");
    }