javascript - 如何使用Javascript将列表项移动到无序列表中的指定索引(位置)

标签 javascript html jquery css html-lists

假设我有一个以下无序列表,如何将“三”移动到列表中的任何索引(位置)? 该方法应该是动态的。替换元素的文本内容不是一个选项。因为每个列表项也将包含其他元素。

<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
  <li>four</li>
  <li>five</li>
  <li>six</li>
  .
  .
  .
  <li>Hundred</li>  /* Nth List Element */
</ul>

尝试了已经回答过类似问题的解决方案。但没有得到想要的结果。

我已经尝试过了

  1. 通过 jQuery 获取数组中的列表
  2. 使用array.each遍历数组
  3. 然后使用 prepend 将特定的 li 移动到列表顶部

但是通过这种方法我只能将 li 元素移动到列表顶部。不在任何想要的位置。

最佳答案

我将使用带有基于索引的方法的构造函数:

function LiMover(liParent){
  this.kids = liParent.children;
  this.move = (index, beforeIndex = null)=>{
    const k = this.kids, e = k[index];
    if(beforeIndex === null){
      liParent.appendChild(e)
    }
    else{
      liParent.insertBefore(e, k[beforeIndex]);
    }
    return this;
  }
}
const liMover = new LiMover(document.querySelector('ul'));
liMover.move(0); // move 0 index (one) after last index
liMover.move(5, 0); // move 5 index (one) back to 0 index
liMover.move(1, 4); // move 1 index (two) to 4 index
liMover.move(3, 5).move(2, 0); // showing return this chain
<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
  <li>four</li>
  <li>five</li>
  <li>six</li>  
</ul>

关于javascript - 如何使用Javascript将列表项移动到无序列表中的指定索引(位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61552108/

相关文章:

javascript - 我正在将项目插入数组,但脚本变得无响应?

php - jQuery .slideUp 问题

javascript - jQuery 的 mouseenter-mouseleave 与悬停事件之间的区别?

javascript - 将未定义的 JSON 转换为新的 JSON 对象

javascript - 检查对象中是否存在值

javascript - 动态图像大小以填充固定大小的 div - Javascript/CSS

html - 如何修复 w3.css 列表项中的高度偏移

jquery - ColorPicker 绑定(bind)颜色

javascript - 如何从 Javascript 获取 HTTP header ?

jquery - 针对移动设备进行优化时,我应该瞄准什么样的页面重量/大小?