Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在循环中使用jquerys replaceWith()时,元素会被删除_Javascript_Jquery - Fatal编程技术网

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

Javascript 在循环中使用jquerys replaceWith()时,元素会被删除,javascript,jquery,Javascript,Jquery,在我的网站上,我有一个li列表,我希望能够对其进行排序。我创建了一个函数,该函数执行并使用排序列表调用renderOutput()。现在我想用排序后的列表更新当前的列表 所以我用这个: function renderOutput(list) { list_original = getList(); //list_original is how it looks from beginning list_original.forEach( (element, index) =>

在我的网站上,我有一个
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项的列表)

我怎样才能解决这个问题


谢谢

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

$('ul')。追加($('li')。排序(函数(a,b){
返回$(a).text()-$(b).text();
}));

  • 三,
  • 一,
  • 二,

为什么要替换单个列表元素而不是整个列表?你的意思是我应该创建一个新的
ul
列表并将元素放入其中,然后用新的更新列表替换页面上的
ul
列表?是的,这是我最初的想法。那么你就不必担心阵列被破坏或者其他什么了,你只需把整个
ul
换掉就行了,这很聪明。我会试试的,谢谢!!