【问题标题】:I need to split every 3 li's and append them to a div [duplicate]我需要每 3 li 拆分一次并将它们附加到一个 div [重复]
【发布时间】:2018-03-18 12:02:00
【问题描述】:

我有一个通用列表

<ul>
  <li>list item1</li>
  <li>list item2</li>
  <li>list item3</li>
  <li>list item4</li>
  <li>list item5</li>
  <li>list item6</li>
</ul>

但我想做的是

<div class="list">
  <ul>
    <li>list item1</li>
    <li>list item2</li>
    <li>list item3</li>

  </ul>
</div>

<div class="list">
  <ul>
    <li>list item4</li>
    <li>list item5</li>
    <li>list item6</li>

 </ul>

我使用过这个脚本,但它只在 1 个 div 中显示 2 个 li 元素我的要求是在一个 div 中创建 3 个 li

    $('ul > li:nth-child(2n-1)').each(function() {
    $(this).next().add(this).wrapAll('<div class="list"><ul></ul></div>');
}).eq(0).closest('div').unwrap();

【问题讨论】:

  • 嗨法哈德你能帮我解决这个问题吗?我做错了什么请告诉我
  • 列表是动态生成的吗?例如,后端使用 PHP 或 Java?
  • 2n-1 每 2 循环一次,你应该使用 3n-1...
  • 嗨,salketer,我已经用过 3n-1,但它不工作
  • 这是我的提琴手jsfiddle.net/sensex00007/mwpd3vgm

标签: javascript jquery


【解决方案1】:

$('ul > li:nth-child(3n-2)').each(function() {
  $(this).next().add($(this).next().next()).add(this).wrapAll('<div class="list"><ul></ul></div>');
}).eq(0).closest('div').unwrap();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>list item1</li>
  <li>list item2</li>
  <li>list item3</li>
  <li>list item4</li>
  <li>list item5</li>
  <li>list item6</li>
</ul>

关键是使用 3n-2 来定位正确的元素(第 1 个、第 4 个等),然后添加以设置 2 个下一个兄弟,然后换行。

你很亲密!

【讨论】:

  • 实际上我想在一个 div 中使用 3 li 使用它不起作用
  • 是的,运行代码sn-p来证明...
  • jsfiddle.net/sensex00007你可以在这里查看...你可以在这里修改
  • 不,我不会。我已经为您提供了问题的解决方案。你应该更好地解释你想要什么,或者至少说什么是行不通的。
  • jsfiddle.net/sensex00007/mwpd3vgm/1 可以在这里查看吗?我在我的提琴手中添加了 jquery
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 2012-01-28
  • 2015-12-02
  • 2019-11-18
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多