我有一个表,该表具有一组未排序的值,并且希望按textContent的降序对这些值进行字母排序。尽管当我执行控制台日志时,元素“ defaultValues”显示为已排序,但是replaceWith不会更新dom。如何用已排序的元素替换未排序的元素?

function sortDefaultValues() {
    rows = tbody.find('tr');
    rows.each(function(i, row) {
        var tableCell = $(row).find('td')[3];
        var defaultValues = $(tableCell).find('span div.custom-label').clone();
        defaultValues.sort(function(a, b) {
            return a.textContent.localeCompare(b.textContent);
        });
        var oldDefaultValues = $(tableCell).find('span div.single-value').parent();

        $(oldDefaultValues).replaceWith($(defaultValues).parent());
    });
}


我希望replaceWith调用可以使用排序后的元素更新DOM,但是顺序保持不变。

最佳答案

尝试更改此:

$(oldDefaultValues).replaceWith($(defaultValues).parent());


对此:

$(oldDefaultValues).replaceWith(defaultValues);


var defaultValuestableCell的副本,当您指定$(defaultValues).parent();时,实际上是在引用原始未排序表。

另外,我始终使用sorttable进行表排序,但是我不确定这对您的实际情况是否有帮助。

10-04 15:47