jquery - 使用 jQuery 在每 5 个 <li> 之后添加 </ul><ul>

标签 jquery list css-selectors

我有一个列表,我需要添加</ul><ul class="list">每 5 里之后,列表看起来像这样

    <ul>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a> </li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
</ul>

最后看起来像这样

<ul>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a> </li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
</ul>
<ul class="list">
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
</ul>
<ul class="list">
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
  <li><a>Test Page</a></li>
</ul>

我当前的 jQuery 无法工作,因为它正在切换 ul 的顺序

var ulVal = jQuery('</ul><ul class="links">');
jQuery('ul.col1 li:nth-child(5n)').after(ulVal)

我做错了什么?

最佳答案

浏览器将文档的当前状态维护为表示嵌套元素和文本节点的 DOM 对象树。它作为某种 HTML 标记源进行维护,您可以对其进行任意编辑,即使 after() 让您认为这就是它正在做的事情。

所以:

jQuery('</ul><ul class="links">');

这行不通。 jQuery(markup) 只能从格式良好的元素创建 DOM 节点,从开始标记开始,并在必要时包括内容和结束标记。它无法创建代表不同元素的结束标记和开始标记的对象。

不要尝试使用 HTML 源代码,而是在 DOM 中移动现有元素节点。

var items= ul.children();
for (var i= 0; i<items.length-5; i+= 5)
    items.slice(i, i+5).appendTo( $('<ul class="list">').insertBefore(ul) );

关于jquery - 使用 jQuery 在每 5 个 <li> 之后添加 </ul><ul>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8067662/

相关文章:

css - 嵌套在 css :not() selectors 中

css - 动态伪类是否先于选择器的其余部分求值?

javascript - WEB Audio API 滤波器 - 使用 slider 位置更改截止频率

javascript - Bootstrap 使 webkit 转换不起作用

python - Pandas - 使用 itertuples 创建列

python - 如何使用循环找到给定值的一对搜索值?

javascript - testcafe 选择器未找到 'div' 元素

javascript - 为每个包含类的元素执行 jquery 函数

javascript - 如何仅在悬停时显示 CSS 过渡效果?

python - 在字典值上运行函数而不丢失与键的关联的更简单的方法?