当我在循环中使用jquerys replaceWith()时,元素会被删除

时间:2018-04-28 21:19:25

标签: javascript jquery

在我的网站上,我有一个li列表,我希望能够对其进行排序。我已经创建了一个函数,然后使用排序列表调用renderOutput()。现在我想用排序列表更新我的当前列表。

所以我用这个:

function renderOutput(list) {
    list_original = getList(); //list_original is how it looks from beginning
    list_original.forEach( (element, index) => {
        // list_original and list is always the same length
        // for each element in original list, replace with the corresponding in the sorted list
        $(element.element).replaceWith(list[index].element);
    }); 
}

但似乎jquery函数replaceWith破坏了列表的长度。在此功能之前,列表的长度比以前低。 (所以如果我运行这个,我最终会得到一个包含1个项目的列表)。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

对列表进行排序并将其追加回<ul>

$('ul').append($('li').sort(function(a, b) {
  return $(a).text() - $(b).text();
}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>3</li>
  <li>1</li>
  <li>2</li>
</ul>